Openssl

帶有副檔名的 OpenSSL 簽名請求

  • October 15, 2016

我為我的開發環境設置了一個小型自簽名 CA。我想創建許多具有不同屬性的不同伺服器證書。我的方法是為每個伺服器創建一個特定的擴展部分。我有一個很大的 openssl.cnf,其中包含如下部分:

[ server0_http ]

nsCertType                      = server
nsComment                       = "HTTP server0"
basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=@server0_http_altnames

[ server0_http_altnames ]
URI.1 = https://server.domain.tld
URI.2 = http://server.domain.tld
IP.1  = 1.2.3.4
DNS.1 = server.doamin.tld

然後,當我使用創建我的 csr 時,openssl我使用參數-config myCustomOpenssl.cnf -reqexts server0_http。當我查看我的請求時,openssl req -text -noout -in myrequest.csr一切看起來都很完美。

但是,在我簽署請求後,“X509v3 Extended Key Usage”和“X509v3 Subject Alternative Name”部分就消失了。為了解決這個問題,我還將-extfile myCustomOpenssl.cnf -reqexts server0_http簽名呼叫的參數放入openssl.

這是預期的行為嗎?我一直認為單獨的 csr 文件必須足以按要求創建證書,即包含所有部分。我的系統現在的工作方式是我獲得了一個缺少部分的證書。要獲得我想要的證書,我必須提供 csr 文件和我用來創建請求的 openssl 配置文件中的相應部分。這對我的小型設置來說沒有問題,但是如果我成為更大的 CA,這會變得非常混亂。應該是這樣還是我錯誤地使用了openssl?

找到了!我描述的是openssl的正常預期行為。預設情況下,自定義擴展不會復製到證書中。

要使 openssl 將請求的擴展複製到證書,必須指定copy_extensions = copy簽名。在原版安裝中,這意味著必須將此行添加default_CAopenssl.cnf.

openssl.cnf(至少)Centos 附帶的版本中,該行已作為註釋包含在內,並帶有“謹慎使用”的警告。如果您不小心,請求者可能會濫用它來讓您頒發 CA 證書。

引用自:https://unix.stackexchange.com/questions/313216