基於 OpenSSL 自建 CA 和頒發 SSL 證書

OpenSSL 軟件 Mac 技術 陸陸輕科技 2017-05-25

自建 CA 頒發證書不僅可以用來鑑權,而且使你的通信更加的安全(請保護好你的證書)。在實際的軟件開發中,越來越多的服務用到 HTTPS,證書的需求隨之增加。那麼對於我們開發者,通過自簽名證書來進行測試必將非常的方便。so,有一個自己的 CA 是不是非常的庫呢!下面我們一步步操作,創建我們自己的 CA。

由於 Mac 自帶的 openssl 版本過低,請安裝更高版本。

建立 CA 目錄

所有命令均在同一目錄執行,沒有進行跳轉。

基於 OpenSSL 自建 CA 和頒發 SSL 證書

通過以上命令,你將得到如下目錄:

基於 OpenSSL 自建 CA 和頒發 SSL 證書

生成 CA 根密鑰

基於 OpenSSL 自建 CA 和頒發 SSL 證書

生成 CA 證書請求

基於 OpenSSL 自建 CA 和頒發 SSL 證書

自簽發 CA 根證書

基於 OpenSSL 自建 CA 和頒發 SSL 證書

以上兩步可以合二為一

基於 OpenSSL 自建 CA 和頒發 SSL 證書

到這裡,我們已經有了自己的 CA 了,下面我們開始為用戶頒發證書。

為用戶頒發證書

生成用戶 RSA 密鑰

基於 OpenSSL 自建 CA 和頒發 SSL 證書

生成用戶證書請求

基於 OpenSSL 自建 CA 和頒發 SSL 證書

使用 CA 簽發證書

使用 CA 簽發證書

基於 OpenSSL 自建 CA 和頒發 SSL 證書

其他證書操作

  • 查看證書的內容:$ openssl x509 -in cert.pem -text -noout

  • 吊銷證書:$ openssl ca -revoke cert.pem -config openssl.cnf

  • 證書吊銷列表:$ openssl ca -gencrl -out cacert.crl -config openssl.cnf

  • 查看列表內容:$ openssl crl -in cacert.crl -text -noout

openssl.cnf

上面步驟中,你可以觀察到 SAN 與 NO SAN 標記。那麼什麼是 SAN,SAN(Subject Alternative Name)是 SSL 標準 x509 中定義的一個擴展。使用了 SAN 字段的 SSL 證書,可以擴展此證書支持的域名,使得一個證書可以支持多個不同域名的解析。所以,只執行 NO SAN 命令也可以簽發證書,不過卻不能夠添加多個域名。

想要添加多個域名或泛域名,你需要使用到該擴展。那麼默認的 OpenSSL 的配置是不能夠滿足的,我們需要複製或下載一份默認的 openssl.cnf 文件到本地。如 https://github.com/openssl/openssl/blob/master/apps/openssl.cnf。這裡我已經準備好一份 http://7xokm2.com1.z0.glb.clouddn.com/openssl/openssl.cnf。

修改匹配策略

默認匹配策略是:國家名,省份,組織名必須相同(match)。我們改為可選(optional),這樣避免我們生成證書請求文件時(csr)去參考 CA 證書。

基於 OpenSSL 自建 CA 和頒發 SSL 證書

修改默認值

這是可選項,修改默認值,可以讓你更快的頒發證書,一直回車就可以了:

基於 OpenSSL 自建 CA 和頒發 SSL 證書

關鍵步驟

最關鍵的地方是修改 v3_req。添加成如下:

基於 OpenSSL 自建 CA 和頒發 SSL 證書

每次如果你要簽發不同域名或 IP,可以直接修改 [ alt_names ]。

注意之後的操作,均要指定 -config openssl.cnf。

再來看看我們的目錄結構:

基於 OpenSSL 自建 CA 和頒發 SSL 證書

相關推薦

推薦中...