我正在尝试使用我在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密钥库中:
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
中使用此密钥库以及以下配置:
<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:
使用不受支持的协议。 ERR_SSL_VERSION_OR_CIPHER_MISMATCH
火狐:
没有通用的加密算法。错误代码:SSL_ERROR_NO_CYPHER_OVERLAP
我的想法
基于此Stack Overflow问题here我认为这可能与RSA有关 - 当我使用-keyalg RSA
参数生成新的密钥库时:
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
并将Tomcat server.xml
SSL配置指向该网站通过HTTPS加载,我在浏览器中收到警告,告诉我这是一个自签名证书。
答案 0 :(得分:2)
如果要使用OpenSSL生成,则必须将PRIVATE KEY AND证书链而不仅仅是证书转换为Java可用密钥库(PKCS12或JKS)。
如果要使用Java生成,则使用keytool -genkeypair -keyalg RSA
(在j7之前添加-keysize 2048
),然后使用Java keytool
生成您提供给CA(Comodo)的CSR,并使用Java keytool
从CA导入新证书及其链。
请参阅(我的)https://stackoverflow.com/a/37423399/2868801上的选项以及其中的几个其他傻瓜。