首页 文章

如何使用默认的snakeoil证书从Java应用程序服务器向Apache服务器发送HTTPS请求?

提问于
浏览
0

我希望在另一台服务器上运行的Java应用程序能够向apache服务器发送HTTPS请求,但由于 SSLHandShakeException ,请求失败 .

我已经做了正确的事情,但我从apache服务器获取了 ssl-cert-snakeoil.pem 文件,并将其导入java应用程序服务器上的java cacerts keystore . 这修复了最初的 PKIX Path Building Failed... 错误,但它现在被另一个SSLHandShakeException替换为 No name matching [mydomain.com] found . 我有点迷茫 .

我运行以将证书导入应用程序的密钥库的初始命令是:

sudo keytool -import -file apache-cert.pem -alias mydomain.com -keystore /path/to/cacerts

1 回答

  • 0

    它无法工作的原因是因为Apache生成的snakeoil证书使用了服务器的主机名(显然!)作为证书的通用名称(CN)(它是一个Amazon EC2服务器,所以它有一个像ip-xxx这样的主机名-xxx-XXX-xxx.region) . 因此,这与我的Java应用程序服务器所期望的(mydomain.com)不匹配 .

    我为Apache服务器生成了一个新的证书/密钥对,例如

    sudo mkdir /etc/apache2/ssl 
    sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
    

    ...在选项中指定mydomain.com作为CN . 然后我编辑了 sites-available config以指向新的证书/密钥,然后是 sudo service apache2 restart .

    之后我将apache.crt文件复制到java服务器并运行

    sudo keytool -import -file apache.crt -alias mydomain.com -keystore /path/to/cacerts
    

相关问题