修改Nginx配置實現https請求

一、Linux下生成Https的crt和key證書

Key 是私用密鑰openssl格,通常是rsa算法。

Csr 是證書請求文件,用於申請證書。在製作csr文件的時,必須使用自己的私鑰來簽署申,還可以設定一個密鑰。

crt是CA認證後的證書文,(windows下面的,其實是crt),簽署人用自己的key給你簽署的憑證。 

1.key的生成 

openssl genrsa -des3 -out server.key 2048

這樣是生成rsa私鑰,des3算法,openssl格式,2048位強度。server.key是密鑰文件名。爲了生成這樣的密鑰,需要一個至少四位的密碼。可以通過以下方法生成沒有密碼的key:

openssl rsa -in server.key -out server.key

server.key就是沒有密碼的版本了。 

2. 生成CA的crt

openssl req -new -x509 -key server.key -out ca.crt -days 3650

生成的ca.crt文件是用來簽署下面的server.csr文件。 

3. csr的生成方法

openssl req -new -key server.key -out server.csr

需要依次輸入國家,地區,組織,email。最重要的是有一個common name,可以寫你的名字或者域名。如果爲了https申請,這個必須和域名吻合,否則會引發瀏覽器警報。生成的csr文件交給CA簽名後形成服務端自己的證書。 

4. crt生成方法

CSR文件必須有CA的簽名纔可形成證書,可將此文件發送到verisign等地方由它驗證,要交一大筆錢,何不自己做CA呢。

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

輸入key的密鑰後,完成證書生成。-CA選項指明用於被簽名的csr證書,-CAkey選項指明用於簽名的密鑰,-CAserial指明序列號文件,而-CAcreateserial指明文件不存在時自動生成。

最後生成了私用密鑰:server.key和自己認證的SSL證書:server.crt

證書合併:

cat server.key server.crt > server.pem

二、修改Nginx配置

1. 檢測命令如下(測試 nginx 是否支持 SSL

nginx -V

如果有顯示 –with-http_ssl_module 表示已編譯 openssl,支持安裝 ssl。

如果沒有安裝請下載 nginx 源碼重新編譯,

./configure --with-http_stub_status_module --with-http_ssl_module
make && make install

make

make install

2. 修改nginx配置,最後重啓即可使用https訪問

server {
listen 80;
listen 443 ssl;
server_name www.sslcity.com;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_certificate /etc/ssl/yourdomain.com.crt;
ssl_certificate_key /etc/ssl/yourdomain.com.key;
ssl_prefer_server_ciphers on;
#自動跳轉到 HTTPS (可選)
if ($server_port = 80) {
rewrite ^(.*)$ https://$host$1 permanent;
}
location / {
root /home/sslcity/;
index index.php;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章