让你的网站支持HTTPS 2022-06-25 11:57 前提:阿里云买的服务器、域名,部署在上面的应用通过nginx做请求转发,这样 http://riun.xyz 访问。现在想要支持https访问。 基本分为三步走:买证书并下载 -> 上传证书到服务器 -> 配置并重启nginx ### 1、购买证书 访问阿里云购买链接(证书类型选择DV,数量20,这样配置费用是0元): https://common-buy.aliyun.com/?spm=5176.7968328.J_8413632810.2.5e9765c3eblmpg&commodityCode=cas_dv_public_cn&request=%7B%22ord_time%22:%221:Year%22,%22order_num%22:1,%22product%22:%22cert_product%22,%22domain%22:%22all%22,%22productCode%22:%22symantec-dv-1-starter%22,%22service_num%22:1%7D 购买之后你就有了20个单域名SSL证书了。 购买后会跳转到“数字证书管理服务界面”(也可以通过左侧导航栏“SSL证书(应用安全)”访问到),“SSL证书” -> “免费证书”,点击“创建证书” ![](https://minio.riun.xyz/riun1/2022-06-25_jWXNxfyqiLY5CcrEut.jpg) 弹出界面填写信息(除了域名需要填写其他都用给你默认生成的),点击下一步。 DNS验证,因为是在阿里云买的域名,所以到这里他会给你直接添加上信息,你直接点“验证”就可以了。如果是其他平台买的域名,需要把这里的信息复制一下,copy到域名解析那里添加一条解析。就像下面这样,这条解析记录在最后可以成功访问网站后是**可以删掉**的: ![](https://minio.riun.xyz/riun1/2022-06-25_kaVzvSkbfJSIlSym8t.jpg) 验证成功后回到SSL证书界面,选择对应的证书,点击右侧的下载,弹出界面中选择对应的服务器类型。因为我是使用nginx做请求转发,所以我下载的是nginx的。下载之后得到一个压缩文件,解压后是两个文件,一个以key结尾,一个以pem结尾。 ### 2、上传证书 将两个文件上传到服务器,上传目录要记一下,待会要用。我这里上传到/etc/nginx/cert/目录下,两个文件目录地址分别是: /etc/nginx/cert/xxx.riun.xyz.pem; /etc/nginx/cert/xxx.riun.xyz.key; ### 3、配置nginx 如果你之前已经可以通过http访问了,那你肯定配置过nginx,只需要将下面注释修改的地方修改为你对应的就行了。 ```conf server { listen 80; server_name xxx.riun.xyz; #改为你的域名 location / { proxy_pass http://ip:port; #改为你要转发到的ip+端口 proxy_send_timeout 300; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } rewrite ^(.*)$ https://$host$1; #将以往的http请求转到https上去 } server { listen 443 ssl; server_name xxx.riun.xyz; #改为你的域名 ssl_certificate /etc/nginx/cert/xxx.riun.xyz.pem; #改为你的文件地址 ssl_certificate_key /etc/nginx/cert/xxx.riun.xyz.key; #改为你的文件地址 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass http://ip:port; ##改为你要转发到的ip+端口,和上面一样,把上面的粘贴过来就好 proxy_send_timeout 300; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 最后重启nginx:nginx -s reload,再访问你的网站,就能https访问了,而且即使通过http访问,也会把请求转发到https上。 ![](https://minio.riun.xyz/riun1/2022-06-25_kdslA7Dd07CaIqD3wL.jpg) ### tips 1、如果你是一个新服务,那么部署服务,做上面的步骤之后是访问不到的,因为要去做一下域名解析。 2、如果你像我一样有好多个三级域名要用([了解三级域名](https://riun.xyz/work/60)),比如aaa.riun.xyz,bbb.riun.xyz,ccc.riun.xyz,都想让他们支持https,那么只需要申请不同的证书分别执行上述步骤即可。 后续:[证书过期后如何重新申请](https://riun.xyz/work/2090447 "证书过期后如何重新申请") --END--
发表评论