Mac-Osx

使用 openssl 生成自簽名證書時如何添加擴展密鑰使用字元串

  • December 30, 2021

我在 Mac OS X 10.9 上使用 openssl 為 Windows Server 遠端桌面服務生成自簽名證書。

使用下面的命令我可以生成證書,

  openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt

但是,我需要添加一個擴展的密鑰使用字元串伺服器身份驗證(1.3.6.1.5.5.7.3.1),我無法在上面的命令中弄清楚如何做到這一點。

我嘗試將 openssl 選項**-extfile**與包含此文件的文件一起使用,

[= default ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1

但是,我收到“找不到-extfile 選項”的錯誤

openssl x509uses-extfile時,您正在使用的命令openssl req, 需要-config指定配置文件。

因此,您可以使用如下命令:

openssl req -x509 -config cert_config -extensions 'my server exts' -nodes \
           -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt

可分辨名稱位的通常提示在預設配置文件中定義(可能/System/Library/OpenSSL/openssl.cnf在 OS X 上),但是當您使用時不會處理此文件-config,因此您的配置文件還必須包含一些 DN 位。因此,上面提到的cert_config可能看起來像這樣:

[ req ]
prompt             = no
distinguished_name = my dn

[ my dn ]
# The bare minimum is probably a commonName
           commonName = secure.example.com
          countryName = XX
         localityName = Fun Land
     organizationName = MyCo LLC LTD INC (d.b.a. OurCo)
organizationalUnitName = SSL Dept.
  stateOrProvinceName = YY
         emailAddress = ssl-admin@example.com
                 name = John Doe
              surname = Doe
            givenName = John
             initials = JXD
          dnQualifier = some

[ my server exts ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
# 1.3.6.1.5.5.7.3.1 can also be spelled serverAuth:
# extendedKeyUsage = serverAuth

# see x509v3_config for other extensions

如評論中所示,您可能可以省略大部分 DN 欄位。對於 HTTPS 使用,我認為您只需要一個與您的主機名匹配的 CN。


req(1)Distinguished Name and Attribute Section Format 部分顯示瞭如果您想生成多個類似的證書/請求,如何修改上述配置以提示輸入值(並提供預設值)。

如果您需要其他證書擴展,請檢查 x509v3_config(5) 以了解您可以在擴展部分中指定的其他位。

引用自:https://serverfault.com/questions/571910