來源:https://www.cnblogs.com/DouglasLuo/p/12258331.html
最近疫情很嚴重,開學也被延遲了。於是在家很閑啊。碰巧,前幾天我租了個域名,就想用研究一下如何搭建https。
這篇文章將用到一下內容:
centos7
一個域名,DNS已經解析到vps的ip地址(免費的二級域名也可以)。
一台vps(沒有vps用網站空間也可以,但不在這篇文章的討論范疇)。
首先在vps上安裝nginx,並開啟端口實現可以在外網訪問通過80端口訪問網站。
yum install epel-release -y #安裝epel源,默認的系統源沒有nginx,安裝完nginx之后可以把epel源移除
yum install nginx -y #安裝nginx服務
firewall-cmd --add-port=80/tcp --zone=public --permanent #設置防火牆開放80端口
systemctl start nginx #啟動ngxin服務
這時候直接在瀏覽器中訪問vps的ip地址可以直接看到nginx的默認頁面
然后我們需要使用certbot-auto工具申請let's encrypt提供的免費ssl證書。
wget https://dl.eff.org/certbot-auto #下載certbot-auto工具
mv certbot-auto /usr/local/bin/certbot-auto #把certbot-auto復制到一個PATH變量包含的目錄
chown root /usr/local/bin/certbot-auto #設置文件所屬者為root
chmod +x /usr/local/bin/certbot-auto #為certbot-auto工具添加可執行權限
這時候執行certbot-auto命令就可以本地申請let's encrypt證書
certbot-auto certonly --email 你的郵箱 --agree-tos --no-eff-email --webroot -w 網站的根目錄 -d 你的域名
注意,這里輸入的必須是已經解析到當前vps的域名,可以是二級域名。並且執行這行命令的時候必須保證nginx的服務是開啟的,並可以通過80端口訪問nginx。
命令如果執行的順利,將在
/etc/letsencrypt/live/你的域名/
目錄下面生成證書文件。這里主要用到以下兩個文件
fullchain.pem 證書文件
privkey.pem 證書文件的私鑰
現在可以編輯nginx的配置文件實現https
vim /etc/nginx/nginx.conf
在配置文件中添加一個server塊,塊的內容如下:
server { listen 443 ssl; #監聽ipv4的443端口,ssl協議 listen [::]:443 ssl; #監聽ipv6的443端口,ssl協議 root /usr/share/nginx/html; #該server的工作目錄(這是nginx的默認目錄) server_name 你的域名; #你的域名 ssl on; #開啟ssl ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem; #設置ssl證書,指定ssl證書文件的目錄 ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem; #ssl證書的私鑰 location / { } }
保存並重啟nginx服務
nginx -t #測試配置文件是否正確
service nginx restart #重啟nginx服務
firewall-cmd --add-port=443/tcp --zone=public --permanent #設置防火牆開放443端口
這時候直接訪問https://你的域名
就可以看到https已經開啟了