1. 程式人生 > >OpenSSL安裝版證書生成,IIS10.0配置SSL證書(小白篇)

OpenSSL安裝版證書生成,IIS10.0配置SSL證書(小白篇)

以下是個人根據網路上資源一步步整理的,由於根據參考的部落格沒能實現生成SSL證書,所以重新寫了篇部落格,工具安裝包文章中也都有下載。。如果錯誤歡迎指教,第一次弄這個,各位見笑了。

一:安裝IIS

1.安裝步驟:控制面板-->
            程式-->
            啟用或關閉windows功能-->
            勾選internet information Services
2.測試:在瀏覽器位址列中輸入地址 http://localhost 回車,如果正確出現相關頁面則安裝成功

二:OpenSSL安裝及生成證書:
1.下載地址:http://slproweb.com/products/Win32OpenSSL.html,找到Download Win32 OpenSSL目錄中的Win64 OpenSSL v1.1.0e Light安裝包下載。(由於官方下載連結中沒找到可用的安裝版本,都是需要經過編譯之後才能使用,所以在此第三方網站中進行下載)

2.安裝,使用預設路徑:C:\OpenSSL-Win64 。一路next下來完成安裝

3.準備工作:

            2).    在bin資料夾中新建一個demoCA資料夾,再在demoCA資料夾中新建一個newcerts資料夾
            3).    在demoCA資料夾中新建檔案:index.txt、index.txt.attr、serial(無後綴)。並在serial檔案中輸入兩個字元 01

4.使用OpenSSL命令生成證書(執行安裝路徑中=資料夾bin中的openssl.exe檔案)
    4.1).首先生成伺服器端私鑰(key檔案)
        命令列:OpenSSL> genrsa -des3 -out server.key 1024
        執行後會提示輸入密碼:Enter pass phrase for server.key:    並且輸入過程無顯示,輸入後直接enter確定即可密碼設為123456方便記憶
        以後每當需讀取此檔案(通過openssl提供的命令或API)都需輸入口令.如果覺得不方便,也可以去除這個口令,但一定要採取其他的保護措施!
        去除key檔案口令:
        命令列:OpenSSL> rsa -in server.key -out server.key
    
    4.2).生成伺服器csr檔案
        命令列:OpenSSL> req -new -key server.key -out server.csr -config openssl.cnf
        生成的csr檔案交給CA簽名後形成服務端自己的證書.螢幕上將有提示,依照其指示一步一步輸入要求的個人資訊即可.
            You are about to be asked to enter information that will be incorporated
            into your certificate request.
            What you are about to enter is what is called a Distinguished Name or a DN.
            There are quite a few fields but you can leave some blank
            For some fields there will be a default value,
            If you enter '.', the field will be left blank.
            -----
            Country Name (2 letter code) [AU]:CN                                                             //中國
            State or Province Name (full name) [Some-State]:zhejiang                        //省份
            Locality Name (eg, city) []:hangzhou                                                                 //地區
            Organization Name (eg, company) [Internet Widgits Pty Ltd]:shuding      //機構
            Organizational Unit Name (eg, section) []:dashuju                                       //部門
            Common Name (e.g. server FQDN or YOUR name) []:server                    //名字
            Email Address []:                                                        //可不輸入

            Please enter the following 'extra' attributes
            to be sent with your certificate request
            A challenge password []:                                           //可不輸入
            An optional company name []:                                  //可不輸入
    
    4.3).生成客戶端私鑰key檔案和csr檔案
        命令列:OpenSSL> genrsa -des3 -out client.key 1024                  //根據提示同上客戶端的操作
                OpenSSL> rsa -in client.key -out client.key                                //去除key檔案口令
                OpenSSL> req -new -key client.key -out client.csr -config openssl.cnf    //根據提示同上伺服器的操作 (個人資訊要保持一致)
    
    4.4).製作CA檔案(CSR檔案必須有CA的簽名才可形成證書)
        命令列:OpenSSL> req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf    //根據提示同上伺服器的操作 (個人資訊要保持一致)
    
    4.5).用生成的CA的證書為剛生成的server.csr,client.csr檔案簽名:
        命令列:OpenSSL> ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf    //有出現選項則選y
                OpenSSL> ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf               //同上
    
    4.6).把生成的.crt格式證書轉換為.pfx格式(Apache使用的SSL證書是.crt格式,如果使用windows主機的iis服務,則不能直接使用此證書,需要要將.crt格式的證書轉換成.pfx格式)
        命令列:OpenSSL> pkcs12 -export -out server.pfx -inkey server.key -in server.crt
                        OpenSSL> pkcs12 -export -out client.pfx -inkey client.key -in client.crt
                        OpenSSL> pkcs12 -export -out ca.pfx -inkey ca.key -in ca.crt
                
    備註:
        1.若製作CA檔案或用CA給檔案簽名時出錯:    failed to update database
                                                                                          TXT_DB error number 2
                                                                                          error in ca
            則修改demoCA下的index.txt.attr,將unique_subject = yes改為unique_subject = no 。
        2.客戶端、伺服器和CA的國家,省份,地區等資訊都必須一致,不然後面給.csr檔案簽名會報錯
        
----現在可以在安裝目錄的bin資料夾中看到生成的幾個證書:ca.pfx、client.pfx、server.pfx。

三:IIS配置伺服器證書
    1.windows搜尋框輸入iis 並右鍵以管理員執行IIS伺服器
    2.雙擊左側連線欄的頂級目錄DESKTOP-SOVQOAH,然後在主頁中IIS項下選擇伺服器證書,雙擊開啟
    3.在伺服器證書頁中,右側單擊匯入,在彈出的對話方塊中選擇OpenSSL生成的伺服器證書檔案(注:必須勾選允許匯出此證書)
    4.在左側連線欄中右鍵單擊網站,選擇新增網站(根據提示資訊選擇自己需要設定為HTTPS的網站,下面以預設的Default Web Site來講)
    5.右鍵單擊Defaut Web Site 選中編輯繫結,彈出的對話方塊中點選右側的新增
    6.根據提示選擇型別為Https,IP地址預設未分配,埠預設443.主機名可不選,點選確定,然後關閉繫結對話方塊
    7.雙擊左側的Defaut Web Site,在其主頁中雙擊選中SSL設定
    8.在SSL設定頁面中勾選 要求SSL,客戶證書選擇忽略。然後單擊右側操作欄中的啟動按鈕
    9.在位址列中輸入 https://localhost 回車,測試是否出現相關頁面(若提示連結不安全等,則可新增例外,繼續瀏覽網頁)
    
tag-----------------------若上述測試成功
    10:在IIS管理器中,進入Default Web Site的SSL設定頁面,將客戶證書選中為必須,然後單擊右側操作欄中的啟動按鈕
    11:在位址列中輸入 https://localhost 回車,測試是否出現相關頁面
        ---->>正常提示:HTTP 錯誤 403.7 - Forbidden
                        您嘗試訪問的頁面要求您的瀏覽器具有該 Web 伺服器可識別的安全套接字層(SSL)客戶證書
    12此時,我們應該匯入客戶端證書(以firefox瀏覽器為例)
        1).開啟選單-->選項-->高階-->檢視證書-->您的證書-->匯入    (證書管理器視窗)
        2).在開啟的檔案瀏覽視窗中選中OpenSSL生成的客戶端證書,然後點選開啟。匯入完成
    13:在位址列中輸入 https://localhost 回車,測試是否出現相關頁面
        ---->>若提示:    HTTP 錯誤 403.16 - Forbidden
                        您的客戶證書不受信任或無效。
            原因:因為證書頒發機構的根證書不是 IIS Web 伺服器上的受信任根證書頒發機構證書儲存中,將出現此問題。
        在 IIS Web 伺服器上,在受信任的根證書頒發機構證書儲存中安裝證書頒發機構的根證書。若要執行此操作,請執行以下步驟:
        1).單擊開始,在開始搜尋框中鍵入 mmc.exe,右鍵單擊 mmc.exe,然後單擊以管理員身份執行
        2).在檔案選單上,單擊新增/刪除管理單元
        3).在可用的管理單元下,單擊證書,然後單擊新增
        4).單擊計算機帳戶,然後單擊下一步
        5).單擊本地計算機,單擊完成,然後單擊關閉
        6).要退出嚮導,請單擊確定
        7).展開證書、受信任的根證書頒發機構,右鍵單擊證書,指向所有任務,然後單擊匯入
        8).在證書匯入嚮導中,單擊下一步
        9).在檔名框中,鍵入證書頒發機構的根證書的位置,然後單擊下一步
        10).單擊下一步,然後單擊完成
        11).同時在瀏覽器的管理器視窗中(同上面12.1步驟進入)的證書機構項中匯入OpenSSL生成的自簽名CA證書
    14:在位址列中輸入 https://localhost 回車,測試是否成功
        
tag--------------------------------最後一步我也未成功,報錯我客戶端證書無效不受信任,不知道是不是瀏覽器本身對於第三方自簽名證書的就不受信任???我用的是firefox和chrome,都不行。。。求高手指點