linux小白從0開始搭建自己的個人網站(二)
阿新 • • 發佈:2021-01-12
伺服器購買了3年,其中2020年基本沒有去管他,最近https證書過期了,重新申請了證書,固做此記錄:
配置https
使用阿里雲免費提供的賽門鐵克ssl證書,伺服器型別:nginx
在aliyun搜尋ssl,申請證書,一般第二天即可使用。
證書檔案
下載的Nginx證書壓縮檔案解壓後包含:
- .pem:證書檔案。PEM檔案的副檔名為CRT格式。
- .key:證書的金鑰檔案。申請證書時如果未選擇自動建立CRS,則下載的證書檔案壓縮包中不會包含.key檔案,需要您將自己手動建立的私鑰檔案拷貝到cert目錄下。
上傳到nginx的安裝目錄
[localhost nginx]# cd /usr/local/nginx/conf/ [localhost]# ls cert [localhost]# cd cert/ 3147716_xxxx.key 3147716_xxxx.pem
修改配置檔案
開啟Nginx安裝目錄/usr/local/conf/nginx.conf檔案並找到以下屬性:
# HTTPS server server { listen 443; server_name localhost; ssl on; ssl_certificate cert.pem; ssl_certificate_key cert.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; location / { .... }
按照下文中註釋內容修改nginx.conf檔案:
# 以下屬性中以ssl開頭的屬性代表與證書配置有關,其他屬性請根據自己的需要進行配置。 server { listen 443; server_name localhost; # localhost修改為您證書繫結的域名。 ssl on; #設定為on啟用SSL功能。 root html; index index.html index.htm; ssl_certificate cert/domain name.pem; #將domain name.pem替換成您證書的檔名。 ssl_certificate_key cert/domain name.key; #將domain name.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 / { root html; #站點目錄。跟80埠的server保持一致!!! index index.html index.htm; } }
設定HTTP請求自動跳轉HTTPS
設定HTTP請求自動跳轉HTTPS。在需要跳轉的HTTP站點下新增以下rewrite語句,實現HTTP訪問自動跳轉到HTTPS頁面。
server {
listen 80;
server_name localhost;
rewrite ^(.*)$ https://$host$1 permanent;
....
}
重啟
儲存nginx.conf檔案後退出,重啟Nginx伺服器。
可能出現問題
nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:104
因為我們配置這個SSL證書需要引用到nginx的中SSL這模組,然而我們一開始編譯的Nginx的時候並沒有把SSL模組一起編譯進去,所以導致這個錯誤的出現。
解決方案
// 來到nginx的包壓縮的解壓目錄,我這裡是nginx-1.13.7
cd /usr/local/nginx/nginx-1.13.7
//重新新增這個ssl模組
./configure --with-http_ssl_module
// 如出錯
yum -y install openssl openssl-devel
// 執行make命令,但是不要執行make install
make
可以檢視到在nginx解壓目錄下,objs資料夾中多了一個nginx的檔案,這個就是新版本的程式了。首先我們把之前的nginx先備份一下,然後把新的程式複製過去覆蓋之前的即可。
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cd /usr/local/nginx/nginx-1.13.7
cp objs/nginx /usr/local/nginx/sbin/nginx
檢視是否有安裝ssl模組成功
[localhost]# cd /usr/local/nginx/
[localhost nginx]# ./sbin/nginx -V
nginx version: nginx/1.13.7
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --with-http_ssl_module
最後如果出現如上,則SSL模組新增到Nginx的編譯好了,這次重新啟動則OK
[localhost]# cd /usr/local/nginx/sbin/
[localhost nginx]# ./nginx -s reload
如果重啟出現
[localhost nginx]# ./nginx -s reload
nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid" failed(2:No such file or directory)
//解決
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
在阿里雲後臺開啟443埠
切記這個,(一)裡面有說明怎麼開啟操作步驟。
測試
瀏覽器訪問helijun.com.cn 可以看到已經是https了,大功告成!
安裝node
// 執行命令
curl -sL https://rpm.nodesource.com/setup_8.x | bash -
sudo yum install -y nodejs
node -v