opensslを使用して自己署名証明書を生成するときに拡張キー使用法の文字列を追加する方法


10

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オプションが見つかりません」というエラーが表示されます


1
(CLI)openssl構成ファイルにより、必要な証明書を生成するためのコードを記述する方が簡単であると確信しました。私はgolangを使用しましたが、openssl clibを使用できると思います。
Rhythmic Fistman 2014

回答:


9

がをopenssl x509使用している間、使用-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.cnfOS 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) で、拡張セクションで指定できる他のビットを確認してください 。


1
このコマンドラインでCSRを生成するだけの場合は、-reqexts 'my server exts'を使用して、後でサーバー認証の拡張キーの使用法を含む証明書をCAに生成するように要求します。
memetech 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.