Alfresco Zugang nur über HTTPS (kein HTTP möglich)

cancel
Showing results for 
Search instead for 
Did you mean: 
userfrank
Member II

Alfresco Zugang nur über HTTPS (kein HTTP möglich)

Hallo,
ich habe bei meinem Alfresco 3.3 den HTTPS-Connector konfiguriert und es funktioniert auch. Damit jedoch sichergestellt ist, dass alle Anwender den HTTPS-Port 8443 nutzen und nicht den HTTP-Port 8080 möchte ich den Connector für 8080 ausschalten bzw. blocken.

Wenn ich den Connector für Port 8080 in server.xml auskommentiere, kann ich mit dem Alfresco Explorer normal über https (8443) zugreifen. Mit Share bekomme ich folgende Fehlermeldung:
HTTP Status 500 - type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.extensions.surf.exception.PlatformRuntimeException: 11020001 Unable to retrieve object: slingshot.site.configuration of type: configuration
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause
org.springframework.extensions.surf.exception.PlatformRuntimeException: 11020001 Unable to retrieve object: slingshot.site.configuration of type: configuration
   org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:130)
   org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
   org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
   org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
   org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
   org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
   org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause
org.springframework.extensions.surf.exception.ModelObjectPersisterException: Error loading object id: slingshot.site.configuration from persister id: webframework.slingshot.persister.remote
   org.springframework.extensions.surf.persister.MultiObjectPersister.getObject(MultiObjectPersister.java:102)
   org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:126)
   org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
   org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
   org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
   org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
   org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
   org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause
org.springframework.extensions.surf.exception.ModelObjectPersisterException: Failure to load model object for path: alfresco/site-data/configurations/slingshot.site.configuration.xml
   org.springframework.extensions.surf.persister.PathStoreObjectPersister.getObject(PathStoreObjectPersister.java:251)
   org.springframework.extensions.surf.persister.MultiObjectPersister.getObject(MultiObjectPersister.java:98)
   org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:126)
   org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
   org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
   org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
   org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
   org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
   org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause
java.io.IOException: Unable to test document path: alfresco/site-data/configurations/slingshot.site.configuration.xml in remote store: alfresco due to error: 498 Connection refused: connect
   org.springframework.extensions.webscripts.RemoteStore.hasDocument(RemoteStore.java:347)
   org.springframework.extensions.surf.persister.PathStoreObjectPersister.getObject(PathStoreObjectPersister.java:216)
   org.springframework.extensions.surf.persister.MultiObjectPersister.getObject(MultiObjectPersister.java:98)
   org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:126)
   org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
   org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
   org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
   org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
   org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
   org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.

Ich nutze Alfreso CE 3.3 mit die mitgelieferten MySQL und Tomcat  6.0.18, es läuft auf einem Windows 2003 Server.
Der wichtige Teil der Server.xml ist hier:
   
<!–
    <Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
               connectionTimeout="20000"
               redirectPort="8443" />
–>
    <!– A "Connector" using the shared thread pool–>
    <!–
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    –>          
    <!– Define a SSL HTTP/1.1 Connector on port 8443
         This connector uses the JSSE configuration, when using APR, the
         connector should be using the OpenSSL style configuration
    –>

    <Connector port="8443" maxThreads="150"
               scheme="https" secure="true" SSLEnabled="true"
          keystoreFile="${user.home}/.keystore" keystorePass="+++++"
               clientAuth="false" sslProtocol="TLS"/>

Woran liegt es, dass Share nicht funktioniert? Ist es der richtige Weg, die den 8080-Connector auszukommentieren, um nur den HTTPS-Connector für den Zugang zu verwenden? Ich bin für jeden Ratschlag bei diesem Problem und für andere Lösungsvorschläge dankbar.

Viele Grüße
Frank
5 Replies
thomash
Member II

Re: Alfresco Zugang nur über HTTPS (kein HTTP möglich)

Hallo,

du musst Share noch mitteilen auf welchem Port es mit dem Alfresco Repository kommunizieren kann.
Share ist lose an das Repo gekoppelt, das heisst es kommuniziert mit einem Remote Endpoint, der Webscript/REST API des Repositories.
Wenn du also den Port 8080 abschaltest dann musst du Share eine Alternative geben.

Du kannst das über die Remote Endpoint Konfiguration in der Datei shared/classes/alfresco/web-extension/share-config-custom.xml einstellen:


  <!– example port config used to access remote Alfresco server (default is 8080) –>
   <!–
   <config evaluator="string-compare" condition="Remote">
      <remote>
         …

         <endpoint>
            <id>alfresco</id>
            <name>Alfresco - user access</name>
            <description>Access to Alfresco Repository WebScripts that require user authentication</description>
            <connector-id>alfresco</connector-id>
            <endpoint-url>http://localhost:8080/alfresco/s</endpoint-url>
            <identity>user</identity>
         </endpoint>

Viele Grüße
Thomas
userfrank
Member II

Re: Alfresco Zugang nur über HTTPS (kein HTTP möglich)

Hallo Thomas,
vielen dank für deine schnelle Antwort.
In meiner Alfresco Version Community - v3.3.0 (2765) ist Konfiguration in der Datei shared/classes/alfresco/web-extension/share-config-custom.xml, wie du sie im Code gezeigt hast, nicht vorhanden. Nachdem ich den Code hinzugefügt und den Server neu gestartet habe, besteht das Problem weiterhin.

Hier ist die Konfiguration der share-config-custom.xml Datein nach meinen Anpassungen. Dabei habe ich die "http"-Anweisungen durch "https" und den Port 8080 durch 8443 ersetzt. Ich hoffe ich habe deinen Rat nicht falsch verstanden. Liegt der Fehler nun an der Konfigurationsdatei?:
<alfresco-config>

   <!– Global config section –>
   <config replace="true">
      <flags>
         <!–
            Developer debugging setting to turn on DEBUG mode for client scripts in the browser
         –>
         <client-debug>true</client-debug>

         <!–
            LOGGING can always be toggled at runtime when in DEBUG mode (Ctrl, Ctrl, Shift, Shift).
            This flag automatically activates logging on page load.
         –>
         <client-debug-autologging>false</client-debug-autologging>
      </flags>
   </config>

   <!– Document Library config section –>
   <config evaluator="string-compare" condition="DocumentLibrary" replace="true">

      <!–
         Whether the folder Tree component should enumerate child folders or not.
         This is a relatively expensive operation, so should be set to "false" for Repositories with broad folder structures.
      –>
      <tree>
         <evaluate-child-folders>false</evaluate-child-folders>
      </tree>

      <!–
         Used by the "Manage Aspects" action

         For custom aspects, remember to also add the relevant i18n string(s)
            cm_myaspect=My Aspect
      –>
      <aspects>
         <!– Aspects that a user can see –>
         <visible>
            <aspect name="cm:generalclassifiable" />
            <aspect name="cm:complianceable" />
            <aspect name="cm:dublincore" />
            <aspect name="cm:effectivity" />
            <aspect name="cm:summarizable" />
            <aspect name="cm:versionable" />
            <aspect name="cm:templatable" />
            <aspect name="cm:emailed" />
            <aspect name="emailserver:aliasable" />
            <aspect name="cm:taggable" />
            <aspect name="app:inlineeditable" />
         </visible>

         <!– Aspects that a user can add. Same as "visible" if left empty –>
         <addable>
         </addable>

         <!– Aspects that a user can remove. Same as "visible" if left empty –>
         <removeable>
         </removeable>
      </aspects>

      <!–
         Used by the "Change Type" action

         Define valid subtypes using the following example:
            <type name="cm:content">
               <subtype name="cm:mysubtype" />
            </type>

         Remember to also add the relevant i18n string(s):
            cm_mysubtype=My SubType
      –>
      <types>
         <type name="cm:content">
            <subtype name="cm:mycontentsubtype" />
         </type>

         <type name="cm:folder">
            <subtype name="cm:myfoldersubtype" />
         </type>
      </types>

      <!–
         If set, will present a WebDAV link for the current item on the Document and Folder details pages.
         Also used to generate the "View in Alfresco Explorer" action for folders.
      –>
        <repository-url>https:/localhost:8443/alfresco</repository-url>
   </config>

   <!– Repository Library config section –>
   <config evaluator="string-compare" condition="RepositoryLibrary" replace="true">
      <!–
         Whether the link to the Repository Library appears in the header component or not.
      –>
      <visible>false</visible>

      <!–
         Root nodeRef for top-level folder.
      –>
      <root-node>alfresco://company/home</root-node>

      <!–
         Whether the folder Tree component should enumerate child folders or not.
         This is a relatively expensive operation, so should be set to "false" for Repositories with broad folder structures.
      –>
      <tree>
         <evaluate-child-folders>false</evaluate-child-folders>
      </tree>
   </config>

   <config evaluator="string-compare" condition="Remote">
      <remote>

           <endpoint>
            <id>alfresco</id>
            <name>Alfresco - user access</name>
            <description>Access to Alfresco Repository WebScripts that require user authentication</description>
            <connector-id>alfresco</connector-id>
            <endpoint-url>https://localhost:8443/alfresco/s</endpoint-url>
            <identity>user</identity>
         </endpoint>

      </remote>
   </config>
</alfresco-config>

Der Fehlercode beim Aufruf von Share habe ich hier nochmal mit angefügt:
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.extensions.surf.exception.PlatformRuntimeException: 11030001 Unable to retrieve object: slingshot.site.configuration of type: configuration
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

org.springframework.extensions.surf.exception.PlatformRuntimeException: 11030001 Unable to retrieve object: slingshot.site.configuration of type: configuration
    org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:130)
    org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
    org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
    org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
    org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
    org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
    org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

org.springframework.extensions.surf.exception.ModelObjectPersisterException: Error loading object id: slingshot.site.configuration from persister id: webframework.slingshot.persister.remote
    org.springframework.extensions.surf.persister.MultiObjectPersister.getObject(MultiObjectPersister.java:102)
    org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:126)
    org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
    org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
    org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
    org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
    org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
    org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

org.springframework.extensions.surf.exception.ModelObjectPersisterException: Failure to load model object for path: alfresco/site-data/configurations/slingshot.site.configuration.xml
    org.springframework.extensions.surf.persister.PathStoreObjectPersister.getObject(PathStoreObjectPersister.java:251)
    org.springframework.extensions.surf.persister.MultiObjectPersister.getObject(MultiObjectPersister.java:98)
    org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:126)
    org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
    org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
    org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
    org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
    org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
    org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.io.IOException: Unable to test document path: alfresco/site-data/configurations/slingshot.site.configuration.xml in remote store: alfresco due to error: 500 sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    org.springframework.extensions.webscripts.RemoteStore.hasDocument(RemoteStore.java:347)
    org.springframework.extensions.surf.persister.PathStoreObjectPersister.getObject(PathStoreObjectPersister.java:216)
    org.springframework.extensions.surf.persister.MultiObjectPersister.getObject(MultiObjectPersister.java:98)
    org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:126)
    org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
    org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
    org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
    org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
    org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
    org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Mit dank und Gruß
Frank
thomash
Member II

Re: Alfresco Zugang nur über HTTPS (kein HTTP möglich)

Hallo Userfrank,

die Fehlermeldung
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
zeigt das Problem recht deutlich auf.

Der konfigurierte HttpConnector kann aufgrund eines fehlenden Zertifikats nicht auf Alfresco zugreifen.

So wie ichs sehe hast du zwei Möglichkeiten entweder du lässt Share über nen HTTP Port auf Alfresco zugreifen, den kannst du nach aussen hin blocken um unkontrollierte Zugriffe zu verhindern oder du musst dem  HttpConnector (den Surf bereitsstellt) der auf dem Apache Commons HttpClient basiert, beibringen das er über HTTPS kommunizieren soll.
Siehe http://hc.apache.org/httpclient-3.x/sslguide.html
Dies geht über die JSSE Installation
http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html
Dann sollte die Implementierung des des org.springframework.extensions.webscripts.connector.Connector  mit HTTPs klar kommen.
userfrank
Member II

Re: Alfresco Zugang nur über HTTPS (kein HTTP möglich)

Hallo,
mein Ziel, auf Alfresco nur noch über den gesicherten https Connector von außen zugreifen zu können, konnte ich mit einem Einzeiler erreichen. In der Server.xml muss im http-Connector einfach nur folgendes ergänzt werden:

        address="localhost"

Schon ist der ungesicherte Connector von außen nicht mehr verfügbar.
thomash
Member II

Re: Alfresco Zugang nur über HTTPS (kein HTTP möglich)

Auch ein Weg und danke für den Hinweis, da hatte ich gar nicht dran gedacht.