繁体   English   中英

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

[英]How to send HTTPS requests to Apache server from Java application server using default snakeoil cert?

我正在使用HTTPS虚拟主机运行apache2 Web服务器。 我想在另一个服务器上运行一个Java应用程序,以便将HTTPS请求发送到apache服务器,但是由于SSLHandShakeException请求失败。

我不确定是否做对了,但是我已经从apache服务器中获取了ssl-cert-snakeoil.pem文件,并将其导入到Java应用程序服务器上的java cacerts密钥库中。 修复了最初的PKIX Path Building Failed...错误,但现在已被另一个SSLHandShakeException替换,该SSLHandShakeException No name matching [mydomain.com] found 我有点迷路了。

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

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

它不起作用的原因是因为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配置,以指向新的cert / key,然后sudo service apache2 restart

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM