一、背景:
1、证书文件已拥有,且证书格式是cer和key形式
2、centos系统,super用户非root
二、部署:
1、将证书转为keystore形式
1)先转为p12格式
openssl pkcs12 -export -in ./server.cer -inkey ./server.key -out ./projectX.p12
记住输入的密码
2)将p12转为.keystore格式
keytool -importkeystore -v -srckeystore ./projectX.p12 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore ./server.keystore -deststoretype jks -deststorepass 123456
2、配置tomcat下server.xml文件
<Connector executor="tomcatThreadPoolHttps" port="8443"
redirctPort="6064" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" maxHttpHeaderSize="8192" acceptCount="1000"
enableLookups="false" scheme="https" secure="true"keystoreFile="./cert/server.keystore"
keystorePass="123456"
clientAuth="false" sslProtocol="TLSv1.2" />
和
<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="8443" />
这里端口配置为8443, 都是https,其与443的区别在于443可以不用带端口号访问;因为super用户权限问题,这里只能配置8443。
3、如果配置的是8443,但是外网映射的是443,这就需要转发一下了,这里使用的是iptables端口转发
由于没有权限,所以直接以下命令是没有效果的
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
但是可以修改iptables文件的方式:
sudo vi /etc/sysconfig/iptables
添加:-A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
然后:service iptables restart 即可
三、中间遇到的问题:
1、tomcat启动后http可以访问,443或8443都不能访问
这是因为443端口没有起来,看下日志就可以看到:
["http-nio-443"] java.net.SocketException: Permission denied
2、使用netstat -ntlp看下端口监听情况:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 25888/java
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 25888/java
tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 25888/java
tcp 0 0 :::22 :::* LISTEN -
看8443是否启动
3、端口已经启动,但是访问一直加载或还是访问不通
这个就是内网与外网映射端口问题了,如果只映射了443,那8443是铁定访问不了了。
网友评论