我曾經看到過很多的朋友,搭建PoC環境甚至是生產環境時,爲了方便申請證書,而在AD CS的服務器上安裝基於IIS的證書申請站點。

        雖然現在的IIS比以前的安全多了,可是在AD服務器上安裝IIS。。。

        首先來說說怎麼獲取證書吧。

        image

        世界發展到今天,不僅是Windows,蘋果的Mac和iOS,安卓,都是一樣要使用證書的。每個系統,其實都會使用一個安全的方式來保存證書。前文我們說過,證書就是公鑰私鑰,因此,蘋果使用KeyChain、安卓使用KeyStore來保存公鑰私鑰。

        如果您曾經申請過證書,就會記得,首先要生成一個證書請求(CSR),然後把這個證書請求提交給CA,CA經過批准後生成一張證書,然後可以把證書導出爲CER文件,在生成證書請求的設備上完成證書申請。

        其實在這背後,過程稍微複雜一點。

        首先需要生成證書請求的客戶端,其實是生成了一公鑰私鑰(還記得我們說的?公私鑰是唯一的、成對匹配的),私鑰會被立即保存到嚴格保護的Key Store存儲中,通常除了生成的證書,不允許其他方式訪問私鑰。

        緊接着,客戶端將公鑰,以及需要的證書信息生成一個CSR文件。請記住,私鑰永遠不會用於申請證書。

        CA獲得CSR請求後,可以按照策略,經過管理員批准或者自動允許生成一張證書。這張證書使用CA的證書進行簽名,同時至少會包含我們前文說的證書三要素,CA的信息、證書有效期(往往根據證書模板確定)以及頒發給誰(即我們提交CSR時,提供的Subject申請信息,例如服務器的FQDN)。

        這個證書在客戶端導入後,客戶端就能夠使用私鑰了。

 

        讓我們回到最前面的問題,申請證書是否一定要使用基於IIS的certsvc站點呢?

 

        當然不用。

        我們可以使用certreq.exe命令行來很好的解決這個問題。

        這個工具可以支持命令行方式申請和導入證書。最關鍵的,這個工具包含在Windows操作系統中。具體命令行可以參考:

       http://technet.microsoft.com/library/cc725793.aspx

       還有一點特別棒的,可以把一組參數作爲一個inf文件,提供給命令行。這樣,對於相同要求的證書請求,就不再需要每次輸入冗長的命令行參數了。

 

      我基於該命令行,使用腳本寫了一個證書生成CSR和導入CER、然後導出PFX的工具。關於這些證書文件的格式,以後再做介紹。

      這個工具的第一步,可以生成一個CSR證書請求。

       image

       然後,可以把這個證書請求,發給中間管理員進行簽名。

       image

       簽過名的證書請求,發送給Apple用於申請APNS證書。

       image

       收到證書後,就可以導入,並且可以將公鑰私鑰一起導出爲PFX文件。

       image

       當然,也可以直接提交CSR到自建CA進行證書的頒發。