準備證書及祕鑰html
方式1、springboot項目可直接在yml中配置java
一、須要將證書轉換成jks或p12格式,如linux
多個crt證書轉爲pem:nginx
cat xxx.crt xxx2.crt xxx3.xrt xxx4.crt > server.pem pem證書轉爲jks: //PEM--->PFX openssl pkcs12 -export -out test.pfx -inkey test.key -in test.pem //PFX--->JKS keytool -importkeystore -srckeystore test.pfx -destkeystore test.jks -srcstoretype PKCS12 -deststoretype JKS crt證書轉爲jks: //CRT-->CER openssl x509 -inform pem -in test.crt -outform der -out test.cer //CER--->JKS keytool -import -v -alias test -file test.cer -keystore test.jks -storepass 123456 -noprompt
二、而後在yml中進行配置spring
server.port=8443 #https默認是443端口好,因爲linux下非root用戶沒法使用443,這裏改成8443) server.ssl.key-store:/xx/xx/server.jks #證書絕對路徑 server.ssl.key-store-password: xxx #證書轉換時設置的密碼 server.ssl.keyStoreType: JKS #證書類型
三、啓動應用,順利的話此時訪問https://domain:8443/就訪問到了原先的頁面centos
四、端口映射,將443端口映射到8443端口 springboot
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443session
此時訪問 https://domain便可dom
這種方式可能涉及到證書屢次轉換,並須要改動項目的配置文件所以不太推薦。tcp
方式2、使用nginx配置https
一、首先安裝nginx,檢查是否有支持ssl模塊,沒有的話記得安裝
二、配置
server { listen 443; server_name 域名; ssl on; ssl_certificate /xx/pem/xxx.pem; ssl_certificate_key /xx/pem/xxx.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; proxy_pass http://域名對應的ip:8080; proxy_set_header X-real-ip $remote_addr; proxy_set_header Host $http_host; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
注意點:
填寫域名
指定證書與祕鑰絕對路徑。證書也能夠是crt格式
proxy_pass值指向服務真實的訪問地址
三、啓動nginx
四、訪問https://domain便可
五、配置http://domain強制跳轉到https://domain
server { listen 80; server_name 域名; rewrite ^(.*)$ https://域名$1 permanent; } 注意點: http默認端口爲80 參數$1表明域名後的路徑
在centos環境下可能會用到的相關命令:
查看開放端口及映射
iptables -L -n --line-number
端口映射
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
取消映射
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
開放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent關閉端口firewall-cmd --zone=public --remove-port=80/tcp --permanent刷新配置firewall-cmd --reload