Nginx 使用 openssl 的自簽名證書


1、準備證書

0. 前期準備工做php

cd ~/
mkdir ssl
cd ssl
mkdir demoCA
cd demoCA
mkdir newcerts
mkdir privatetouch index.txtecho '01' > serial

1. 製件 CA 證書html

生成 CA 私鑰: ca.keynginx

openssl genrsa -des3 -out ca.key 2048

這樣是生成 rsa 私鑰,`des3` 算法,openssl 格式,2048 位強度。`ca.key` 是密鑰文件名。爲了生成這樣的密鑰,須要一個至少四位的密碼。另外能夠經過如下方法生成沒有密碼的key:算法

openssl rsa -in ca.key -out ca_decrypted.key

生成 CA 根證書的公鑰 ca.crt:瀏覽器

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

2. 製做網站的 https 證書,並用 CA 簽名認證ruby

假設咱們須要爲 abc.com 域名製做證書session

先生成 abc.com 的證書私鑰 abc.com.pemide

openssl genrsa -des3 -out abc.com.pem 1024

無密碼的私鑰網站

openssl rsa -in abc.com.pem -out abc.com.key

生成 csr 簽名請求加密

openssl req -new -key abc.com.pem -out abc.com.csr

這裏須要輸入國家,地區,組織,email等。最重要的是 **common name**,能夠寫你的名字或者域名。若是爲了 https 申請,這個必須和域名同樣,即,這裏要寫 abc.com,不然會引起瀏覽器警報,這裏能夠用 *.abc.com 來作泛域名證書。

最後,須要用 CA 證書進行簽名:

openssl ca -policy policy_anything -days 1460 -cert ./demoCA/ca.crt -keyfile ./demoCA/ca.key -in abc.com.csr -out abc.com.crt

這樣網站的 https 證書就作完了。

還有一步就是把 ca.crt 的內容追加到 abc.com.crt 後面,由於有些瀏覽彷佛不支持。

cat demoCA/ca.crt >> abc.com.crt

nginx 配置

加入配置內容:

server {  listen 443;  server_name abc.com www.abc.com;  root html;  index index.html index.htm;  ssl on; 
  ssl_certificate /PATH/TO/abc.com.crt;  ssl_certificate_key /PATH/TO/abc.com.key;  ssl_session_timeout 5m;  ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;  ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";  ssl_prefer_server_ciphers on;  location / {    try_files $uri $uri/ =404;  }       
}

其它

其實不少時候,並不須要加密的 key,因此像這面這麼作就行了。

cd ~/
mkdir ssl
cd ssl
mkdir demoCA
cd demoCA
mkdir newcerts
mkdir privatetouch index.txt
echo '01' > serial
openssl genrsa -out ca.key 2048openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
cd ..
openssl genrsa -out abc.com.key 2048openssl req -new -key abc.com.key -out abc.com.csr
openssl ca  -policy policy_anything  -days 1460 -in abc.com.csr -out abc.com.crt -cert ./demoCA/ca.crt -keyfile ./demoCA/ca.key
相關文章
相關標籤/搜索