【发布时间】:2019-08-26 14:52:29
【问题描述】:
在我们公司的网络中,我们的服务器使用自签名证书。我有一个在 docker swarm 上运行的 NEXUS Repository Manager 服务,我想设置 LDAP 身份验证。但由于我的 LDAP 服务器也使用自签名证书,我的 NEXUS 服务无法连接。我收到以下错误:
There is an error communicating with the server. Failed to connect to Ldap Server: sun.security.validator.ValidatorException: No trusted certificate found<br/><br/>Nexus returned an error: ERROR 400: Bad Request
当我搜索解决方案时,我在 sonatype NEXUS 文档中找到了这篇文章:https://help.sonatype.com/repomanager2/secure-socket-layer-ssl/managing-outbound-ssl-certificates#ManagingOutboundSSLCertificates-ConfiguringNexusRepositoryManagerWithaCustomTruststore
我尝试关注这篇文章。首先我自定义了 ${NEXUS_HOME}/bin/jws/conf/wrapper.conf 文件(见第 4 和 5 号):
# Additional JVM parameters (tune if needed, but match the sequence of numbers!)
wrapper.java.additional.1=-Djava.io.tmpdir=./tmp
wrapper.java.additional.2=-Djava.net.preferIPv4Stack=true
wrapper.java.additional.3=-Dcom.sun.jndi.ldap.connect.pool.protocol="plain ssl"
wrapper.java.additional.4=-Djavax.net.ssl.trustStore=/usr/secrets/truststore.jks
wrapper.java.additional.5=-Djavax.net.ssl.trustStorePassword=changeit
修改后,我使用提供的启动脚本启动了 NEXUS(请参阅我的 Dockerfile 以添加修改后的 wrapper.conf 和启动应用程序):
[...]
COPY ./wrapper.conf /opt/sonatype/nexus/bin/jws/conf/wrapper.conf
RUN chown -R -L nexus.nexus ${NEXUS_HOME}
RUN chown -R nexus.nexus ${SONATYPE_WORK}
USER nexus
WORKDIR ${NEXUS_HOME}
CMD ${NEXUS_HOME}/bin/nexus console
我使用 compose yml 文件启动我的 nexus 服务并调用
docker stack deploy --compose-file /path/to/my/nexus.yml nexus
然后我检查容器在我的哪些集群节点上运行并使用
附加到它docker exec -ti <containername> bash
我检查了我修改后的 wrapper.conf 是否在容器中 -> 好的
然后我用ps -ef | grep java检查了NEXUS的java进程->我的jvm属性-Djavax.net.ssl.trustStore和-Djavax.net.ssl.trustStorePassword不可见:
ps -ef | grep java 的输出:
nexus 76 74 0 11:29 ? 00:01:22 java -Djava.io.tmpdir=./tmp -Djava.net.preferIPv4Stack=true -Dcom.sun.jndi.ldap.connect.pool.protocol=plain ssl -Xms256m -Xmx768m -Djava.library.path=bin/jsw/lib -classpath bin/jsw/lib/wrapper-3.2.3.jar:./lib/slf4j-api-1.7.25.jar:./lib/jetty-servlet-8.1.16.v20140903.jar:./lib/logback-access-1.2.3.jar:./lib/metrics-core-2.2.0.jar:./lib/jetty-webapp-8.1.16.v20140903.jar:./lib/javax.servlet-3.0.0.v201112011016.jar:./lib/metrics-jetty-2.2.0.jar:./lib/jul-to-slf4j-1.7.25.jar:./lib/jetty-jmx-8.1.16.v20140903.jar:./lib/jetty-client-8.1.16.v20140903.jar:./lib/jetty-deploy-8.1.16.v20140903.jar:./lib/jetty-io-8.1.16.v20140903.jar:./lib/jetty-util-8.1.16.v20140903.jar:./lib/nexus-bootstrap-2.14.14-01.jar:./lib/jetty-security-8.1.16.v20140903.jar:./lib/plexus-interpolation-1.16.jar:./lib/jetty-xml-8.1.16.v20140903.jar:./lib/logback-core-1.2.3.jar:./lib/jetty-http-8.1.16.v20140903.jar:./lib/jetty-continuation-8.1.16.v20140903.jar:./lib/metrics-logback-2.2.0.jar:./lib/logback-classic-1.2.3.jar:./lib/jetty-rewrite-8.1.16.v20140903.jar:./lib/jetty-server-8.1.16.v20140903.jar:./conf/ -Dwrapper.key=zAxEtY8vJ5V7ACyi -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=74 -Dwrapper.version=3.2.3 -Dwrapper.native_library=wrapper -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 org.sonatype.nexus.bootstrap.jsw.JswLauncher ./conf/jetty.xml ./conf/jetty-requestlog.xml
我可以在那里看到 3 个 jvm 参数
-Djava.io.tmpdir=./tmp、-Djava.net.preferIPv4Stack=true 和 -Dcom.sun.jndi.ldap.connect.pool.protocol="plain ssl" 来自 wrapper.conf,但不是我的两个新的。
有人可以看看这个并给我一些建议吗?
【问题讨论】:
标签: java ssl nexus docker-swarm