自建 CA 頒發證書不僅可以用來鑑權,而且使你的通信更加的安全(請保護好你的證書)。在實際的軟件開發中,越來越多的服務用到 HTTPS,證書的需求隨之增加。那麼對於我們開發者,通過自簽名證書來進行測試必將非常的方便。so,有一個自己的 CA 是不是非常的庫呢!下面我們一步步操作,創建我們自己的 CA。
由於 Mac 自帶的 openssl 版本過低,請安裝更高版本。
建立 CA 目錄
所有命令均在同一目錄執行,沒有進行跳轉。
通過以上命令,你將得到如下目錄:
生成 CA 根密鑰
生成 CA 證書請求
自簽發 CA 根證書
以上兩步可以合二為一
到這裡,我們已經有了自己的 CA 了,下面我們開始為用戶頒發證書。
為用戶頒發證書
生成用戶 RSA 密鑰
生成用戶證書請求
使用 CA 簽發證書
使用 CA 簽發證書
其他證書操作
查看證書的內容:
$ 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 證書。
修改默認值
這是可選項,修改默認值,可以讓你更快的頒發證書,一直回車就可以了:
關鍵步驟
最關鍵的地方是修改 v3_req。添加成如下:
每次如果你要簽發不同域名或 IP,可以直接修改 [ alt_names ]。
注意之後的操作,均要指定 -config openssl.cnf。
再來看看我們的目錄結構: