使用自籤的證書配置nginx的https

1、生成根證書密鑰

  #] openssl genrsa -des3 -out ca.key 2048

2、自簽證書

  #] openssl req -new -x509 -days 7305 -key ca.key -out ca.crt

    參數說明:

    req: 生成證書籤署請求

-news: 新請求

-key /path/to/keyfile: 指定私鑰文件

-out /path/to/somefile: 

-x509: 生成自簽署證書

-days n: 有效天數

3、準備必要文件:

  #] touch /etc/pki/CA/{index.txt,serial}

  #] echo 01 > /etc/pki/CA/serial

4、製作網站證書並用此CA簽名,假設網站域名爲web1

  生成證書密鑰:

  #] openssl genrsa -des3 -out web1.pem 1024


  製作解密後的web1證書私鑰:

  #] openssl rsa -in web1.pem -out web1.key


  生成簽名請求,在common name中填入網站域名,如web1即可生成改站點的證書,同時也可以使用泛域名如*.web1來生成所有二級域名可用的網站證書:

  #] openssl req -new -key web1.pem -out web1.csr

  

  用CA進行簽名:

  #] openssl ca -policy policy_anything -days 365 -cert ca.crt -keyfile ca.key -in web1.csr -out web1.crt

其中,policy參數允許簽名的CA和網站證書可以有不同的國家、地名等信息,days參數則是簽名時限。


最後,把ca.crt的內容粘貼到web1.crt後面。這個比較重要!因爲不這樣做,可能會有某些瀏覽器不支持。


5、配置nginx支持https

  在nginx.conf配置文件server配置中增加一下配置: 

    listen 443;

    ssl on;

    ssl_certificate /path/to/web1.crt;

    ssl_certificate_key /path/to/web1.key;

  其中的路徑是剛剛生成的網站證書的路徑。

  然後使用一下命令檢測配置和重新加載nginx:

  檢測配置:

    nginx -t

  重新加載:

    nginx -s reload

  

6、優化nginx配置

  在http{}中加入:

    ssl_session_cache shared:SSL:10m;

    ssl_session_timeout 10m;

  據官方文檔所述,cache中的1m可以存放4000個session。

  在配置https的虛擬主機server{}中加入:

    keepalive_timeout 70;


7、客戶端瀏覽器導入根證書和網站證書

  打開證書管理工具:運行certmgr.msc命令(也可以在瀏覽器中導入證書)

  wKioL1eqxVaA8VuYAAEdyHV8GuI091.png

  將根證書ca.crt導入至受信任的根證書頒發機構,網站證書web1.crt導入到個人正式中。

  然後在瀏覽器中輸入https://domain,地址欄左側會出現一把綠色的鎖,如下圖:wKioL1eqxjjiVFI-AAEFsEmiHMM158.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章