已从Rundeck 3.0.2(API v30)升级到3.2.1(API v34)。安装Yum / RPM,RHEL 7。
在现有工作安装之后,我按照Rundeck文档和建模配置了SSL。SSL可通过网络正常运行,当我使用curl调用作业REST API时,也能正常运行,但是当我们的MuleSoft应用程序访问REST API时,它会失败并出现handhake_failure:
%% Initialized: [Session-1, SSL_NULL_WITH_NULL_NULL]
qtp1539575645-26, fatal error: 40: no cipher suites in common
javax.net.ssl.SSLHandshakeException: no cipher suites in common
%% Invalidated: [Session-1, SSL_NULL_WITH_NULL_NULL]
qtp1539575645-26, SEND TLSv1.2 ALERT: fatal, description = handshake_failure
qtp1539575645-26, WRITE: TLSv1.2 Alert, length = 2
qtp1539575645-26, fatal: engine already closed. Rethrowing javax.net.ssl.SSLHandshakeException: no cipher suites in common
我确认MuleSoft信任Rundeck服务器的证书。以前,我没有在Rundeck ssl配置中明确包含/排除任何密码套件,但是我强迫MuleSoft使用特定套件,然后使用-Drundeck.jetty.connector.ssl.includedCipherSuites=(insert suite here)
参数将该套件添加到/ etc / sysconfig / rundeckd中,但是我们仍然收到“ no共同的密码套件”错误。
添加-Djavax.net.debug=ssl
parm /etc/sysconfig/rundeckd
会将握手详细信息添加到service.log
。我可以看到被排除的密码套件的列表,但是没有看到确认中包括我添加的密码套件的列表。我确实在运行的JVM的进程详细信息中看到了parm。
感觉就像是MuleSoft方面的客户端问题,我们正在与供应商联系,但是我感到奇怪的是,当我明确包含客户端发送的密码套件时,仍然看不到一个共同点。也许我使用-Drundeck.jetty.connector.ssl.includedCipherSuites
不正确?
我/etc/sysconfig/rundeckd
目前正在测试的文件如下所示:
export RUNDECK_WITH_SSL=true
export RDECK_HTTPS_PORT=4443
RDECK_JVM_OPTS="-Drundeck.jaaslogin=true \
-Djava.security.auth.login.config=/etc/rundeck/jaas-multiauth.conf \
-Dloginmodule.name=multiauth \
-Djavax.net.ssl.trustStore=/etc/rundeck/ssl/truststore \
-Djavax.net.ssl.trustStoreType=jks \
-Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol \
-Drundeck.jetty.connector.ssl.includedCipherSuites=TLS_RSA_WITH_AES_256_GCM_SHA384 \
-Dorg.eclipse.jetty.util.ssl.LEVEL=DEBUG \
-Djavax.net.debug=ssl"
任何想法表示赞赏!
问题是客户端MuleSoft要求Rundeck服务器的SSL证书具有'KeyUsage = digitalSignature'扩展名。添加此扩展程序解决了该问题。