Nginx-搭建https服務器


  先看Nginx中的配置

server {
    listen 443;
    ssl on;
    ssl_certificate  /usr/local/nginx/conf/任意證書名.crt;
    ssl_certificate_key  /usr/local/nginx/conf/任意私鑰名(可帶密碼,可不帶密碼).key;
}

  重要事項:

  在生成CSR文件時同時生成您的私鑰,如果您丟了私鑰或忘了私鑰密碼,則頒發證書給您后不能安裝成功!您必須重新生成私鑰和CSR文件,免費重新頒發新的證書。為了避免此情況的發生,請在生成CSR后一定要備份私鑰文件和記住私鑰密碼,最好是在收到證書之前不要再動服務器。 “openssl”用於生成私鑰和CSR,OpenSSL一般安裝在/user/bin下,如果您的系統安裝在其他目錄,請指定正確的目錄路徑。以下所有命令假設您已經成功安裝OpenSSL,將產生2048位的密鑰,加密算法采用3DES,您必須使用您要申請SSL證書的域名來命名密鑰文件。生成key和csr等都可以在任意計算機上生成,只要生成好拷貝到服務器即可

  步驟:

    第一種,分步生成私鑰和證書請求文件(CSR)

    1.生成私鑰,此命令將生成2048位的RSA私鑰,使用DES3算法,私鑰文件名可任意命名,在Nginx配置中指定文件路徑即可,會提示設定私鑰密碼,請設置密碼,並牢記!!

openssl genrsa -des3 -out aaaa.key 2048

    此時生成的key是有密碼的,可以使用如下命令去除密碼,此步驟非必要,且需在第2步之后,即必須使用帶密碼的key來生成csr!

openssl rsa -in aaaa.key -out aaaa_nopwd.key 

    2.配合已生成的私鑰生成證書請求文件(CSR)

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

     PS:第2步命令將提示您輸入X.509證書所要求的字段信息,包括國家(中國添CN)、省份、所在城市、單位名稱、單位部門名稱(可以不填直接回車)。請注意: 除國家縮寫必須填CN外,其余都可以是英文或中文。請輸入您要申請SSL證書的域名,如果您需要為www.domain.com申請SSL證書就不能只輸入domain.com。SSL證書是嚴格綁定域名的。 請不要輸入Email、口令(challenge password)和可選的公司名稱(如果輸入口令,每次啟動服務器都會要求輸入密碼),直接打回車即可。 您現在已經成功生成了密鑰對,私鑰文件:www.yilexun.com.key 保存在您的服務器中, 請把CSR文件:www.yilexun.com.csr 發給證書服務公司(比如StartSSL)即可,各個含義如下:

Country Name (2 letter code): 使用國際標准組織(ISO)國碼格式,填寫2個字母的國家代號。中國請填寫CN。
State or Province Name (full name): 省份,比如填寫Shanghai
Locality Name (eg, city): 城市,比如填寫Shanghai
Organization Name (eg, company): 組織單位,比如填寫公司名稱的拼音
Organizational Unit Name (eg, section): 比如填寫IT Dept
Common Name (eg, your websites domain name): 行使 SSL 加密的網站地址。請注意這里並不是單指您的域名,而是直接使用 SSL 的網站名稱 例如:pay.abc.com。 一個網站這里定義是: abc.com 是一個網站; www.abc.com 是另外一個網站; pay.abc.com 又是另外一個網站。 
Email Address: 郵件地址,可以不填
A challenge password: 可以不填
An optional company name: 可以不填

    第二種,同時生成私鑰和證書請求文件

openssl req -newkey rsa:2048 -keyout aaaa.key -out aaaa.csr

 

  CSR文件必須要有CA的簽名才能形成證書,可以將此CSR發給StartSSL(可免費)、verisign(一大筆錢)等地方由他來驗證。也可以自己做CA,自己給自己頒發證書。

  首先生成CA證書和私鑰

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

  在繼續下面操作前,將openssl.cnf(可以使用locate命令查找)文件打開,查看其dir路徑將其修改為dir = /home/openssl/bin/demoCA/,否則下面的步驟會提示路徑無法找到。

mkdir -p /home/openssl/bin/demoCA/newcerts
touch /home/openssl/bin/demoCA/index.txt
echo "01" >> /home/openssl/bin/demoCA/serial

  用生成的CA的證書為剛才生成的csr文件簽名:

openssl ca -in aaaa.csr -out aaaa.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

  這樣生成的證書的序列號是01,如果用同一個CA證書重復以上步驟生成不同的server證書,這些證書都會擁有相同的序列號01。

  這在Firefox瀏覽器下會出現SEC_ERROR_REUSED_ISSUER_AND_SERIAL錯誤。改進辦法:

    刪除demoCA/serial文件,openssl ca后面增加一個參數-create_serial,這樣就會生成一個隨機的128bits的序列號,基本上能避免上述錯誤。

 

  aaaa.key、aaaa.csr、aaaa.crt;其中key和crt都是放在服務器上的。


免責聲明!

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



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