支持多域名的 https 證書簽名步驟和自簽名


  Web Server支持HTTPS訪問需要兩個文件,私鑰和證書。私鑰和證書都放在服務器上,私鑰用來加密數據,證書傳遞給客戶端。自己簽名的證書在傳遞給瀏覽器的時,因為證書不被信任,所以會彈出連接不安全,一般點高級->繼續瀏覽,還是可以訪問網頁。如果我們的證書被根證書廠商簽名過的話,就不會彈出不安全的提示,瀏覽器地址欄一般還有綠色小鎖標志。以下來說一下怎么一步步生成證書。

  1. 使用openssl生成私鑰文件server.key,以下的步驟都是在Ubuntu上的使用openssl操作的,需要注意一下Ubuntu的系統時間,不要制作出來的證書是過期的。

openssl genrsa -out server.key 2048

  

  2.1 修改 openssl.cnf,因為我之前在做這部分的時候,證書需要支持多個域名和 IP,所以才需要這個步驟,制作單域名證書可以不用修改配置文件。

  2.2 拷貝openssl.cnf到當前目錄

cp /etc/ssl/openssl.cnf ./

  2.3 按以下修改拷貝過來的配置文件:

    1> 在 [ req ] 塊下取消注釋行 req_extensions = v3_req

    2> 確保[ req_distinguished_name ]下沒有 0.xxx 的標簽,有的話把0.xxx的0. 去掉

    3> 在 [ v3_req ] 塊下增加一行 subjectAltName = @alt_names

    4> 在文件末尾增加如下信息:

      [ alt_names ]

      DNS.1 = www.liqingjht.com

      DNS.2 = liqingjht.com

      IP.1 = 192.168.1.105

      IP.2 = 192.168.1.107

    4>tip>  注意有沒有www是不一樣的域名,我在做證書請求CSR文件的時候,有 IP 的需求,不過在交給廠商簽名的時候,廠商建議不加入 IP ,說是現在的標准逐漸不支持這種做法,因此我就沒加上 IP 了,如果廠商支持的話,這么做應該是可以的,因為自己簽名試了一下。

  

  3.1 使用私鑰和配置文件生成證書請求CSR文件server.csr,沒有修改配置文件的不用寫配置文件的參數

openssl req -new -key server.key -out server.csr -config ./openssl.cnf

  3.2 生成CSR文件需要填寫一些信息,Common Name填寫主要域名,這個域名要在DNS.XX里

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Fujian
Locality Name (eg, city) []:Xiamen
Organization Name (eg, company) [Internet Widgits Pty Ltd]:cnblogs
Organizational Unit Name (eg, section) []:cnblogs
Common Name (e.g. server FQDN or YOUR name) []:www.liqingjht.com
Email Address []:liqingjht@163.com

  3>tip> server.csr 這個文件就是要拿給CA廠商簽名的,server.key這個私鑰文件自己保存好。拿給廠商簽名后廠商會用他們的根證書前面這個CSR文件生成你服務器可用證書給你,在這之前我們可以自己充當CA廠商這個角色來測試一下。

  

  4.1 要生成用來前面CSR文件的根證書,首先創建CA目錄

mkdir ./demoCA
mkdir demoCA/newcerts
touch demoCA/index.txt
echo 01 > demoCA/serial

  4.2 生成ca.key,並自簽名生成ca.crt證書,需要填寫密碼兩次,如1234,填寫的Common Name要和上面生成CSR文件一致。其他步驟一樣,建議還是按照CSR文件那樣填寫就好了。這里時間可以看到簽了兩年。

openssl req -new -x509 -days 3650 -keyout ca.key -out ca.crt -config ./openssl.cnf

  

  5. 使用自簽署的CA證書簽署服務器CSR證書請求,輸入密碼,一直按y就好了:

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -config openssl.cnf

  

  6. 這時候當前目錄有這幾個文件:ca.key ca.crt server.key server.crt server.csr,其中server.key server.crt就是要放在服務器上的,ca.key相當於電腦內置的根證書。將ca.crt下載到pc上,在瀏覽器管理證書那里切到根證書那欄,將ca.crt導入進來,這時候你用 https訪問openssl.cnf里填寫的DNS.XX 或 IP.XX 就不會跳出不安全提示了。將CSR文件交給廠商簽名就是因為廠商的CA證書有內置在瀏覽器里,所以即使沒有手動導入,也不會出現不安全提示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM