
利用局域网环境搭建https服务,模拟系统上线正式环境,提前发现可能存在的问题,确保项目平稳上线。
一、环境准备
- 服务器系统:CentOS 6 (Red Hat Enterprise Linux Server release 6.3 (Santiago))
- web服务器: Nginx、Tomcat9
- Java环境:Java 8
二、Https服务搭建
2.1 https证书获取
获取https证书主要有两种方式,第一种,使用工具生成ssl证书,例如:openssl工具、 JDK自带的keytool工具;第二种,在线向第三方机构申请的免费或付费的SSL证书,例如:阿里云SSL证书服务,百度云SSL证书服务,华为云SSL证书管理SCM,腾讯云SSL证书服务等。本次采用第一种方式,使用工具生成ssl证书。之前写《基于TrueLicense实现web应用的License验证》时,有详细讲到使用keytool生成ssl证书文件。
2.2 使用Tomcat配置Https
2.2.1 生成ssl证书
1 2
| # 为服务器生成证书 目录下面生成tomcat.keystore的文件 keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore tomcat.keystore -storepass 123456
|
2.2.2 配置Tomcat的Https服务
将生成的tomcat.keystore密钥库文件拷贝到Tomcat服务器的conf目录下。修改Tomcat配置server.xml,注释掉http连接器,释放https连接器,启用https,并配置证书路径及密码:
1 2 3 4 5 6 7 8 9 10
|
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="conf/tomcat.keystore" type="RSA" certificateKeystorePassword="123456" /> </SSLHostConfig> </Connector>
|
启动Tomcat,访问8443端口验证服务。
2.3 使用Tomcat+Nginx配置https
1 2 3 4 5 6 7 8
| # 生成密钥对 keytool -genkeypair -alias server -keyalg RSA -keysize 2048 -validity 3650 -keypass 123456 -storepass 123456 -keystore server.keystore # 查看详情 keytool -list -keystore -storepass 123456 server.keystore # 把jks证书转换为p12格式证书 keytool -importkeystore -srckeystore server.keystore -destkeystore server.p12 -srcstoretype JKS -deststoretype PKCS12 # 导出 cer证书 keytool -exportcert -file server.cer -alias server -keystore server.keystore -storepass 123456
|
安装openssl,将cer格式证书转pem格式。windows下载链接。
1 2 3 4
| # 将cer格式证书转pem格式 openssl x509 -inform der -in server.cer -out server.pem # 提取私钥 openssl pkcs12 -nocerts -nodes -in server.p12 -out server.key
|
2.3.2 openssl生成证书
1 2 3 4 5 6 7 8 9 10
| # 生成私钥文件 openssl genrsa -des3 -out server.key 1024 # 为了不需要在每次重启nginx的时候都输入密码,删掉密码 mv server.key servertemp.key openssl rsa -in servertemp.key -out server.key rm servertemp.key # 私钥文件生成csr证书文件 openssl req -new -key server.key -out server.csr # 生成crt证书文件 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
|
2.3.3 配置nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| server { listen 443 ssl; server_name baidu.com; keepalive_timeout 70;
ssl_certificate /home/server.crt; ssl_certificate_key /home/server.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;
location / { proxy_pass http://localhost:8080; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Real-IP $remote_addr; } }
|
重启nginx
1
| /usr/local/nginx/sbin/nginx -s reload
|
Nginx的安装和配置可参考《Nginx的安装和配置》。