我正在尝试为我在 AWS Bitnami 上托管的域设置 TLS (SSL),以便用户可以通过 HTTPS 访问它。它独立运行在 Apache Tomcat 上,没有 LB 前端。
要生成证书签名请求 (CSR),我有:
sudo openssl genrsa -out /opt/bitnami/apache-tomcat/conf/server.key 2048
并输入所有正确的信息,即 www.hostname.com 格式的主机名,然后:
sudo openssl req -new -key /opt/bitnami/apache-tomcat/conf/server.key -out /opt/bitnami/apache2/conf/cert.csr
之后我将 .csr 文件内容复制到 CA (ssl.comodo.com) 并保存生成的文件:.ca-bundle 和 .crt 文件。
然后我将文件上传到 Tomcat 目录并将它们加载到 Java keystore 中:
keytool -import -trustcacerts -alias root -file www_domainname_com.ca-bundle -keystore KeyStore.jks
和.crt:
keytool -import -trustcacerts -alias tomcat -file www_domainname_com.crt -keystore KeyStore.jks
Tomcat 在 server.xml
中配置为使用此 keystore 和以下配置:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" keystoreFile="/home/bitnami/KeyStore.jks" keystorePass="passwordhere" sslProtocol="TLS"/>
然后apache已经重启了。我收到的浏览器错误是:
Chrome :
uses an unsupported protocol. ERR_SSL_VERSION_OR_CIPHER_MISMATCH
火狐:
no common encryption algorithm(s). Error code: SSL_ERROR_NO_CYPHER_OVERLAP
我的想法
基于这个 Stack Overflow 问题 here我认为这可能与 RSA 有关 - 当我使用 -keyalg RSA
参数生成新的 keystore 时:
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
并将 Tomcat server.xml
SSL 配置指向该站点通过 HTTPS 加载,我在浏览器告诉我这是一个自签名证书。
最佳答案
如果您想使用 OpenSSL 生成,则必须将私钥和证书链(不仅仅是证书)转换为可用于 Java 的 keystore ,即 PKCS12 或 JKS。
如果您想使用 Java 生成,请使用 keytool -genkeypair -keyalg RSA
(并在 j7 之前添加 -keysize 2048
),然后 您使用 Java keytool
生成您提供给 CA (Comodo) 的 CSR,然后您使用 Java keytool
从 CA 导入新证书及其链.
请参阅 (my) https://stackoverflow.com/a/37423399/2868801 中的选项以及那里链接的其他几个骗局。
关于amazon-web-services - AWS Tomcat SSL 浏览器错误 - 我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46140502/