1. 程式人生 > >debian 下 openssl自建證書SSL+apache [fix CA bug]

debian 下 openssl自建證書SSL+apache [fix CA bug]

本文的主要目的是如何使用openssl生成伺服器和客戶端證書,並使用apache來搭建https伺服器,本文的內容主要來源於網上的其他的帖子,不過假如了一些修正:

1: 概念

        A: SSL所使用的證書可以是自己建的生成的,也可以通過一個商業性CA如Verisign 或 Thawte簽署證書。

        B: 證書的概念:首先要有一個根證書,然後用根證書來簽發伺服器證書和客戶證書,一般理解:伺服器證書和客戶證書是平級關係。在SSL必須安裝根證書和伺服器證書來認證.

             因此:在此環境中,至少必須有三個證書:即根證書,伺服器證書,客戶端證書,在生成證書之前,一般會有一個私鑰,同時用私鑰生成證書請求,再利用證書伺服器的根證來簽發證書。

        C: 簽發證書的問題:我最近找了很多關於openssl的資料,基本上只生成了根證書和私鑰及伺服器證書請求,並沒有真正的實現簽證。我這裡參考了一些資料,用openssl自帶的一個CA.sh來簽證書,而不是用MOD_ssl裡的sign.sh來籤。

2: 安裝apache+openssl

3:   簽證

      安裝openssl後,在openssl下有一個CA.sh檔案,就是利用此檔案來簽證, 來籤三張證書,然後利用這三張證書來布SSL伺服器。debian下CA.sh位於: /usr/lib/ssl/misc/CA.sh

     這裡請修改 ssl的配置檔案:/usr/lib/ssl/openssl.cnf, 將[ CA_default ] section 下x509_extensions = usr_crt 改為 x509_extensions = v3_ca,

      為什麼要改動openssl的配置檔案,請參考 https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/50333 。也就是說,如果不改,那麼你從ie-Tools-Content-Certificates下檢視你的客戶端證書,會出現下面這個warning:

"This Certificate is not valid because one of the certification authorities in the certification path does not appear to be allowed to issue certificates or this certificate cannot be used as an end-entity certificate."

也無法連線到apache伺服器。

好了,就這麼多了,祝大家順利