1. 程式人生 > 實用技巧 >linux小白從0開始搭建自己的個人網站(二)

linux小白從0開始搭建自己的個人網站(二)

伺服器購買了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