https部署

准备证书及秘钥

方式一、springboot项目可直接在yml中配置

  1、需要将证书转换成jks或p12格式,如

  多个crt证书转为pem:

  

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

  2、然后在yml中进行配置

  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      #证书类型

  

  3、启动应用,顺利的话此时访问https://domain:8443/就访问到了原先的页面

  4、端口映射,将443端口映射到8443端口 

    iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443

    此时访问 https://domain即可

  这种方式可能涉及到证书多次转换,并需要改动项目的配置文件因此不太推荐。

方式二、使用nginx配置https

  1、首先安装nginx,检查是否有支持ssl模块,没有的话记得安装

  2、配置

  

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值指向服务真实的访问地址

  3、启动nginx

  4、访问https://domain即可

  5、配置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

上一篇:PostgreSQL 务实应用(五/5)常用表达


下一篇:连HTTPS都有漏洞,这么不安全的互联网我们还要继续用吗?