簡易實現 HTTPS (二) 自簽名證書

cn-five發表於2020-09-03

自寫證照往往用於學習或者測試環境,如果專案商業化執行,應當購買權威第三方 CA 機構頒發的證照。

Apache 中部署 HTTPS

建立目錄 /etc/httpd/ca ,執行命令

# 非對稱加密 rsa 演算法生成2048 位元位的私鑰
openssl genrsa -out server.key 2048

生成 csr 證照籤名請求檔案

# 指定私鑰 server.key 生成新的 server.csr 檔案
openssl req -new -key server.key -out server.csr

填寫註冊資訊,這一欄填寫自己的域名或者 IP 地址。

Common Name (eg, your name or your server's hostname) []:lamp.test.com

將新生成的私鑰和證照拷貝至 ssl 配置目錄。

cp server.key /etc/pki/tls/private/
cp server.crt /etc/pki/tls/certs/

更改 ssl.conf 配置檔案

訪問 https://lamp.test.com

證照有效期由之前的 1 年 變成了 10 年。

Nginx 中部署 HTTPS

首先檢視本機 nginx 是否安裝 http_ssl_module 模組,如果沒有就原始碼重灌 nginx ,使用引數 --with-http_ssl_module

nginx -V

進入 /etc/ssl 目錄,執行命令

# 使用 des3 演算法 生成 4096 位元位伺服器私鑰
openssl genrsa -des3 -out server.key 4096

# 生成證照籤名請求檔案
openssl req -new -key server.key -out server.csr

# 生成 4096 位 ca 私鑰
openssl genrsa -des3 -out ca.key 4096

# 去除伺服器私鑰避免以後每次載入檔案需要輸入密碼
openssl rsa -in server.key -out server.key

# 以 x509 證照格式標準生成 10 年的 crt ,注意填寫域名或者 IP 地址
openssl req -new -x509 -key ca.key -out ca.crt -days 3650

# 請求有效期為 3650 天 傳入檔案為server.csr 指定 CA 檔案為 ca.crt 指定私鑰檔案為ca.key 並自動建立 CA 序列檔案 輸出證照檔案 server.crt 至此簽名成功
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

修改 nginx 配置檔案

listen 80;
# 監聽 443 埠
listen 443 ssl;
server_name lnmp.test.com;

# 配置伺服器證照
ssl_certificate /etc/ssl/server.crt;
# 配置伺服器私鑰
ssl_certificate_key /etc/ssl/server.key;

重啟 nginx

nginx -t
nginx -s reload

訪問 lnmp.test.com

成功實現 nginx 簡易部署 HTTPS 。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章