网站由Http切换至Https-来点啤酒

申请证书

我们这里以freessl为例;这个网站有免费的证书;商业性质网站推荐使用付费的证书;

这里可以按需要选择;如果你解析了很多的子域名;如a.domain.com,b.domian.com;推荐使用Let‘s Encrypt V2 支持通配符;*.domain.com

这里填入邮箱;因为证书有效期原因;在证书即将到期时;你可能会收到证书提供者的提醒邮件,这里确认创建以后;会得到一个私钥的压缩包。

 

 

 

这一步要开始验证域名,证书提供者需要验证你是不是域名的所有者,这时你需要登陆到你的域名控制台,如腾讯云,阿里云的控制台,添加两条txt记录,

把上图的要求添加的记录值在你的控制台一次添加;稍等几分钟,然后点击验证,等待验证完成。

这时候你可以点击下载证书了,这个压缩包包含一个私钥和pem格式证书

#1、PEM 格式的证书文件适合哪些服务器?#Nginx、Apache、Candy Server#2、CRT 格式的证书文件怎么获得?#直接将 .pem 后缀改为 .crt 就可以#3、JKS 格式的证书文件怎么获得?#JAVA 专属格式,可用于 HIS、jboss、Jetty,需要通过转换获得:#https://myssl.com/cert_convert.html#4、PFX/P12 格式的证书文件怎么获得?#PKCS12 格式证书,可用于 IIS6、IIS7、IIS8、xchange、代码签名,需要通过转换获得:#https://myssl.com/cert_convert.html#或者通过 OpenSSL 自助转换:#openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out certificate.pfx

 


 

上传证书到服务

这一步就大家随意;用ftp;sftp等等

你的服务器或者说容器运行用户需要对该目录有访问权限

setfacl -R -m user:tomcat:rwx 证书目录


修改服务器配置

我这里已nginx服务器为例,nginx支持pem格式;但网上很多使用crt格式;关于格式如何转换上文中已经提到过了。

 server { listen 80; listen 443 ssl; server_name 证书申请域名; ssl_certificate /证书根目录/full_chain.crt; ssl_certificate_key /证书根目录/private.key; location / { proxy_pass http://server/; client_max_body_size 50m; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-PORT $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

 


然而用户很多时候只会输入域名;不会输入协议头;此时用户等于访问不到https地址;这时我们需要做如下调整

 server { listen 80; server_name 证书申请域名; rewrite ^(.*) https://$server_name$1 permanent; } server {# listen 80; listen 443 ssl; server_name 证书申请域名; ssl_certificate /证书根路径/full_chain.crt; ssl_certificate_key /证书根路径/private.key; location / { proxy_pass http://server/; client_max_body_size 50m; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-PORT $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

 


如此配置后;我们重启服务;

service nginx force-reload

 


此时你再访问;仅需输入域名;将会自动跳转到https服务上去

 

相关文章