Dar*_*ren 5 tomcat ssl-certificate ssl-certificate-errors
我的公司向默认使用 http 的客户提供了一个基于 Tomcat/MySQL 的应用程序。应客户的要求,我通过创建自签名证书使其能够使用 https。使用自签名证书时,这会受到预期的浏览器错误的影响。
经过渗透测试,他们决定我们需要禁用一些已弃用的 ssl 协议和密码,因此我将 tomcat server.xml 中的 ssl 连接器修改为如下所示:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.1" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_WITH_AES_128_GCM_SHA256"
keystoreFile="/path/to/keystore/file"
keystorePass="password" />
Run Code Online (Sandbox Code Playgroud)
这满足了渗透测试,该应用程序继续在所有三个主要浏览器(Chrome、Firefox 和 IE)中运行。但是,渗透测试也表明我们最好不要使用自签名证书,因此,按照这些 指南,我创建了一个 CSR 并让客户创建了一个签名到其内部域的证书(服务器可以通过以下方式访问)几个不同的 URL,因此需要使用 SAN 创建 CSR)。
我将证书添加到新的密钥库并相应地修改了 server.xml 文件中的路径。现在,当我尝试连接时,出现以下错误(这是来自 Firefox,但所有浏览器都会产生类似的错误):
安全连接失败
连接到 172.31.1.36:8443 期间发生错误。无法与对等方安全通信:没有通用的加密算法。错误代码:SSL_ERROR_NO_CYPHER_OVERLAP
由于无法验证接收到的数据的真实性,因此无法显示您尝试查看的页面。请联系网站所有者以告知他们此问题。
我的理解是证书不控制应该使用什么密码或协议,所以我不明白为什么会发生这种情况。这是我在生成 CSR 时犯的错误还是客户端在生成证书时犯的错误?
-编辑-
我似乎到处都在出错。如果我尝试将密钥导入密钥库,我会得到以下任一信息:
cat <keyfile> | openssl pkcs12 -export -out <keystore>.p12
Enter pass phrase:
unable to load certificates
Run Code Online (Sandbox Code Playgroud)
或这个:
keytool -importkeystore -srckeystore <keyfile> -srcstoretype pkcs12 -destkeystore <keystore>.jks
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
keytool error: java.io.IOException: toDerInputStream rejects tag type 45
Run Code Online (Sandbox Code Playgroud)
我让客户向我发送证书链,当我尝试导入时,出现此错误:
keytool -import -trustcacerts -alias tomcat -file <certchain>.p7b -keystore <keystorefile>.jks
Enter keystore password:
keytool error: java.lang.Exception: Input not an X.509 certificate
Run Code Online (Sandbox Code Playgroud)
我找到了一些关于如何将 pkcs 文件转换为 x.509 的解决方案,但后来我遇到了其他错误,所以我现在完全被卡住了。
所有问题的根本原因是证书格式错误。
通过跟踪此处的信息,我发现该证书实际上是 DER 格式。我将其转换如下:
openssl x509 -inform der -in certfile.cer -out new_certfile.pem
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11822 次 |
最近记录: |