嗨,大家今天来跟大家伙儿聊聊我是咋搭建HTTPS网站的。这年头,网站不搞个HTTPS,总感觉差点儿意思,安全性不够嘛我就动手折腾一番,把过程记录下来,也方便以后自己查阅,顺便分享给有需要的朋友们。
准备工作
你得有个域名,还得有个服务器,这俩是基础,我就不多说。我,域名是在阿里云买的,服务器用的是腾讯云的轻量应用服务器,系统是Ubuntu 20.04。有这些,咱就可以开工!
搞到SSL证书
要让网站支持HTTPS,就得有个SSL证书。这玩意儿有免费的,也有收费的。我一开始图省事,想搞个免费的,后来发现免费的证书有效期短,老得续期,太麻烦!干脆一咬牙,买个收费的,一年期的,省心!
我是在阿里云买的SSL证书,买完之后,它会让你验证域名所有权。一般有两种方式:
- DNS验证:就是在你的域名解析记录里加一条TXT记录,阿里云那边能查到这条记录,就说明域名是你的。
- 文件验证:就是在你的网站根目录下放一个特定的文件,阿里云那边能访问到这个文件,也算验证通过。
我选的是DNS验证,比较简单,按着阿里云的提示一步步操作就行。验证通过后,阿里云就会给你签发证书。
服务器上安装证书
证书到手,接下来就是把它安装到服务器上。我用的是Nginx,所以就以Nginx为例说说怎么安装。
把证书文件(通常是.crt和.key文件)上传到服务器。我习惯把它们放到/etc/nginx/ssl目录下,没有这个目录就自己创建一个。
然后,修改Nginx的配置文件。找到你的网站对应的配置文件,一般在/etc/nginx/sites-available目录下。打开配置文件,找到server块,在里面加上这些:
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/你的证书.crt;
ssl_certificate_key /etc/nginx/ssl/你的证书.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
解释一下:
listen 443 ssl;:让Nginx监听443端口,这是HTTPS的默认端口。ssl_certificate和ssl_certificate_key:指定证书文件的路径。ssl_protocols:指定支持的SSL/TLS协议版本,我这里只启用TLS 1.2和TLS 1.3,更安全。ssl_ciphers:指定加密算法,这一串看着复杂,是从网上抄的,据说是比较安全的配置。ssl_prefer_server_ciphers on;:让服务器优先使用自己指定的加密算法。
改完配置文件,保存,然后重启Nginx:
sudo systemctl restart nginx
配置HTTP自动跳转到HTTPS
你的网站已经可以通过HTTPS访问。但是,如果你直接输入域名,还是会通过HTTP访问。为让所有访问都走HTTPS,还得再配置一下,让HTTP自动跳转到HTTPS。
还是在Nginx的配置文件里,找到原来的server块(监听80端口的那个),改成这样:
server {
listen 80;
server_name 你的域名;
return 301 https://$host$request_uri;
解释一下:
- 这段配置的意思是,所有通过80端口访问的请求,都返回301重定向,跳转到HTTPS对应的地址。
改完保存,再重启Nginx:
sudo systemctl restart nginx
大功告成!
不管你输入HTTP还是HTTPS,都会自动跳转到HTTPS。打开浏览器,输入你的域名,看看地址栏是不是有个小锁头?这就表示你的网站已经成功启用HTTPS!
整个过程就是这样,也不算太复杂。关键是要细心,一步步来,别漏哪个环节。希望我的这篇分享能帮到大家!





