Chris Turchin created CMIS-1007: ----------------------------------- Summary: Server name indication support for cmis-workbench Key: CMIS-1007 URL: https://issues.apache.org/jira/browse/CMIS-1007 Project: Chemistry Issue Type: Improvement Components: opencmis-workbench Affects Versions: OpenCMIS 1.0.0 Environment: Windows 8.1 Reporter: Chris Turchin
I have recently started using letsencrypt as a certificate authority for my development servers. Unfortunately, I get the following error when trying to login to my cmis server using the latest version of cmis-workbench: {code} > 18:17:48 ERROR hemistry.opencmis.workbench.ClientHelper: > CmisPermissionDeniedException: Forbidden org.apache.chemistry.opencmis.commons.exceptions.CmisPermissionDeniedException: Forbidden at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:497) at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.read(AbstractAtomPubService.java:701) at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.getRepositoriesInternal(AbstractAtomPubService.java:873) at org.apache.chemistry.opencmis.client.bindings.spi.atompub.RepositoryServiceImpl.getRepositoryInfos(RepositoryServiceImpl.java:66) at org.apache.chemistry.opencmis.client.bindings.impl.RepositoryServiceImpl.getRepositoryInfos(RepositoryServiceImpl.java:92) at org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl.getRepositories(SessionFactoryImpl.java:120) at org.apache.chemistry.opencmis.workbench.model.ClientSession.connect(ClientSession.java:243) at org.apache.chemistry.opencmis.workbench.model.ClientSession.<init>(ClientSession.java:124) at org.apache.chemistry.opencmis.workbench.LoginDialog.createClientSession(LoginDialog.java:302) at org.apache.chemistry.opencmis.workbench.LoginDialog$1.actionPerformed(LoginDialog.java:123) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.AbstractButton.doClick(Unknown Source) at javax.swing.plaf.basic.BasicRootPaneUI$Actions.actionPerformed(Unknown Source) at javax.swing.SwingUtilities.notifyAction(Unknown Source) at javax.swing.JComponent.processKeyBinding(Unknown Source) at javax.swing.KeyboardManager.fireBinding(Unknown Source) at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source) at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown Source) at javax.swing.JComponent.processKeyBindings(Unknown Source) at javax.swing.JComponent.processKeyEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source)> 18:17:48 ERROR hemistry.opencmis.workbench.ClientHelper: Error code: 0 > 18:17:48 ERROR hemistry.opencmis.workbench.ClientHelper: Error content: > <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access /mc/cmis/atom on this server.<br /> Reason: The client software did not provide a hostname using Server Name Indication (SNI), which is required to access this server.<br /> </p> </body></html> {code} The certificate is on the reverse proxy, running Apache/2.4.18 (Ubuntu) and looks basically like this: {code} <VirtualHost somehost.somedomain:443> ServerName somehost.somedomain SSLEngine On SSLCertificateFile /var/letsencrypt/somehost.somedomain/signed.crt SSLCertificateKeyFile /var/letsencrypt/somehost.somedomain/domain.key SSLCACertificateFile /var/letsencrypt/somehost.somedomain/intermediate.pem SSLProtocol +TLSv1.2 +TLSv1.1 +TLSv1 SSLOpenSSLConfCmd DHParameters "/usr/local/apache2/1024dhparams.pem" SSLProxyEngine on ProxyPass / http://localhost:8379/ timeout=600 ProxyPassReverse / http://localhost:8379/ timeout=600 ProxyPreserveHost On Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Credentials "true" Header edit Location ^http(\:\/\/.*)$ https$1 </VirtualHost> {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)