[英]How to send data from Android application to Java Server(Apache tomcat)?
[英]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.