OpenSSLを使用して証明書テンプレート情報を含むCSRを生成します

6
Chris 2019-08-01 05:07.

次の構成ファイルを使用して、OpenSSLでCSRを生成しています。

[ req ]
default_bits           = 2048
default_keyfile        = usercert.key
distinguished_name     = req_distinguished_name
attributes             = req_attributes
prompt                 = no

[ req_distinguished_name ]
C            = FR
L            = Paris
OU           = IT
CN           = FirstName LastName

[ req_attributes ]
1.3.6.1.4.1.311.13.2.1 = CertificateTemplate=CustomUserOffline

ここでの私の目標は、Windows CAがテンプレート名を処理できるようにするために、テンプレート名をCSRに含めることです。

次のコマンドラインを使用してCSRを生成します。

openssl req -new -key usercert.key -out usercert.csr -config usercert.cnf

実行してもエラーは発生せず、次のコマンドでCSRを確認できます。

openssl req -text -noout -verify -in usercert.csr
verify OK
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: C = FR, L = Paris, OU = IT, CN = FirstName LastName
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:af:85:28:40:84:d8:8a:58:35:86:b8:f5:25:b2:
                    ...
                    05:8d:57:cc:a0:4c:8f:da:f3:f4:a7:57:76:51:e2:
                    56:25
                Exponent: 65537 (0x10001)
        Attributes:
            1.3.6.1.4.1.311.13.2.1   :CertificateTemplate=CustomUserOffline
    Signature Algorithm: sha256WithRSAEncryption
         1e:4e:9b:6d:24:75:81:5f:be:52:58:ba:79:a1:ac:c8:d6:c9:
         ...
         40:2d:b6:fc

しかし、certutil usercert.csrWindowsでCSRを検証しようとすると、次のエラーが発生します。

PKCS10 Certificate Request:
Version: 1
Subject:
    CN=FirstName LastName
    OU=IT
    L=Paris
    C=FR
  Name Hash(sha1): ab6adbd772e0ca2a0fce4a32abfdd1645686c0b9
  Name Hash(md5): 21d7edb09130201e880133c245617304

Public Key Algorithm:
    Algorithm ObjectId: 1.2.840.113549.1.1.1 RSA (RSA_SIGN)
    Algorithm Parameters:
    05 00
Public Key Length: 2048 bits
Public Key: UnusedBits = 0
    0000  30 82 01 0a 02 82 01 01  00 af 85 28 40 84 d8 8a
    ...
    0100  f3 f4 a7 57 76 51 e2 56  25 02 03 01 00 01
Request Attributes: 1
  1 attributes:

  Attribute[0]: 1.3.6.1.4.1.311.13.2.1 (Enrollment Name Value Pair)
    Value[0][0], Length = 27
Cannot decode object: The data is invalid. 0x8007000d (WIN32: 13 ERROR_INVALID_DATA)
CertUtil: -dump command FAILED: 0x8007000d (WIN32: 13 ERROR_INVALID_DATA)
CertUtil: The data is invalid.

カスタム属性は1.3.6.1.4.1.311.13.2.1 (Enrollment Name Value Pair)表示どおりに認識されているようですが、名前と値のペアCertificateTemplate=CustomUserOfflineが適切な形式ではないと思います。
どうすれば修正できますか?

いくつかの注意:

  • 私はOpenSSLを使用してCSRを生成しています。これは、最終的にはLinuxクライアントがCSRを生成するためです。

  • certreq -attrib "CertificateTemplate:CustomUserOffline" -submit usercert.csrコマンドは知っていますが、リクエストはcertenroll APIを使用してC#コードで送信されるため、証明書テンプレート情報をCSRに直接含めたいと思います。

1 answers

6
garethTheRed 2019-08-01 06:34.

openssl.conf入力の上部:

[ OIDs ]

certificateTemplateName = 1.3.6.1.4.1.311.20.2

あなたの[req_attributes]

certificateTemplateName = ASN1:PRINTABLESTRING:CustomUserOffline

もちろん、質問で行ったようにOIDの定義をスキップして、OIDを直接使用することもできます。


次のopenssl設定ファイルを使用します。

oid_section = OIDs

[ OIDs ]

# This uses the short name of the template:
certificateTemplateName = 1.3.6.1.4.1.311.20.2

# Use this instead if you need to refer to the template by OID:
# certificateTemplateOID = 1.3.6.1.4.1.311.21.7  

  [ req ]

prompt             = no
string_mask        = default

# The size of the keys in bits:
default_bits       = 2048
distinguished_name = req_dn
req_extensions     = req_ext

[ req_dn ]

# Note that the following are in 'reverse order' to what you'd expect to see in
# Windows and the numbering is irrelevant as long as each line's number differs.

# Domain Components style:
# Server name:
# 2.DC = com
# 1.DC = example
# commonName = Acme Web Server

# Locality style:
# countryName = GB
# stateOrProvinceName = London
# localityName = Letsby Avenue
# organizationName = Acme
# organizationalUnitName = IT Dept
# organizationalUnitName = Web Services
# commonName = Acme Web Server

# Or traditional org style:
countryName = GB
organizationName = Acme
organizationalUnitName = IT Dept
2.organizationalUnitName = Web Services
commonName = Acme Web Server

[ req_ext ]

#basicConstraints=critical,CA:TRUE

# This requests a certificate using the 'CustomUserOffline' template.  Check with the CA for the correct name to use,
# or alternatively comment it out and let the CA apply it:
certificateTemplateName = ASN1:PRINTABLESTRING:CustomUserOffline

subjectAltName = @alt_names

[alt_names]
# To copy the CN (in the case of a DNS name in the CN) use:
# DNS = ${req_dn::commonName}
DNS.1 = www.example.com
DNS.2 = example.com

これにより、以下を使用して表示すると、次の抽出が行われますopenssl req -in usercert.csr -noout -text

    Attributes:
    Requested Extensions:
        1.3.6.1.4.1.311.20.2:
            ..CustomUserOffline

と一緒に表示した場合の次の抜粋certutil usercert.csr

  Attribute[0]: 1.2.840.113549.1.9.14 (Certificate Extensions)
    Value[0][0], Length = 4d
Certificate Extensions: 2
    1.3.6.1.4.1.311.20.2: Flags = 0, Length = 13
    Certificate Template Name (Certificate Type)
        CustomUserOffline

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

これらの22ドルのBluetoothイヤフォンであなたの次のジョギングのコードを切ってください

これらの22ドルのBluetoothイヤフォンであなたの次のジョギングのコードを切ってください

取引を投稿するたびに、これらのMpow Swift Bluetoothイヤフォンを大量にスナップしますが、この時点まで見逃していた場合は、別のチャンスがあります。スマートウォッチを所有していて、近くに電話がなくても音楽を聴きたい場合は、これらは必須ですが、ジョギング、芝刈り、またはその他の取得したくないアクティビティにも最適です。ワイヤーに絡まっています。

オフサイドコールを逃したことで2回目の残業でライトニングウィン

オフサイドコールを逃したことで2回目の残業でライトニングウィン

タンパベイは、モントリオールとのスタンレーカッププレーオフシリーズで1-0のリードを奪い、ライトニングのニキータクチェロフが、ベルセンターでの2回目の延長戦の2分後にネットを見つけ、2-1の最終スコアを獲得しました。しかし、ハブスのファンは、勝った所有物のゾーンにパックを持ち込んだときにタンパベイが明らかにオフサイドだったという事実について当然のことながら騒いでいます:誰もがサドンデスの残業プロセスの欠陥を探すべきではありませんが、これはサドンデスの残業の終焉を求める恐ろしい人が指摘するようなもの。

ホラー:H1Z1の発売の舞台裏

ホラー:H1Z1の発売の舞台裏

ゲームを起動するのは難しいです。では、世界を見て注目を集めるタイトルをリリースし、事態が悪化するとどうなるでしょうか。多くの物。

Be My Eyesは、救いの手を必要とする視覚障害者とボランティアをペアにします

Be My Eyesは、救いの手を必要とする視覚障害者とボランティアをペアにします

iOS:ご想像のとおり、視覚的な手がかりのない最も単純な決定でさえ、非常に困難な場合があります。Be My Eyesは、ライブビデオフィードを通じて、目の見える人と視覚障害者を結び付け、その名前が示すように、目であり、オブジェクトを読んだり、周囲をナビゲートしたりするのに役立ちます。

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

イーサン プラスの誕生日のお祝いは、TLC のウェルカム トゥ プラスビルのシーズン 4 のフィナーレで、戦争中の母親のキム プラスと妻のオリビア プラスを結びつけました。

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

ケイト・ミドルトンはロンドンの水辺で一日を過ごし、さらにジェニファー・ロペス、ジュリアン・ハフなど

ケイト・ミドルトンはロンドンの水辺で一日を過ごし、さらにジェニファー・ロペス、ジュリアン・ハフなど

ケイト・ミドルトンはロンドンの水辺で 1 日を過ごし、ジェニファー・ロペス、ジュリアン・ハフなども。ハリウッドからニューヨークまで、そしてその間のあらゆる場所で、お気に入りのスターの活躍をご覧ください!

ウィスコンシン川でのナイフ攻撃で 17 歳の少年が刺されて死亡、他の 4 人が負傷したままになっている

ウィスコンシン川でのナイフ攻撃で 17 歳の少年が刺されて死亡、他の 4 人が負傷したままになっている

捜査官は、グループと容疑者が攻撃の前にお互いを知っていたかどうかを調べています

滑走路着陸

滑走路着陸

晩夏と秋はノスタルジックな季節。街灯は雨で濡れた通りに光を放ち、足元の葉 - 夕暮れの影の中で落ち着いた赤オレンジ - は過ぎ去った日々を思い出させます。

実際に変換するコンテンツ戦略を作成することを想像してみてください。それが可能だ。

実際に変換するコンテンツ戦略を作成することを想像してみてください。それが可能だ。

2021 年には、サービスを提供する顧客と顧客に伝えるストーリーについて知っていることをすべて再考することをお勧めします。あとずさりする。

マンモスロスは私の心を愛に開いた

マンモスロスは私の心を愛に開いた

フェリックス ザ キャットの 9 歳の誕生日の日に、大人になってからの最大の損失の 1 つである 2013 年のソフィーを思い出します。私はこのエッセイを書き、2013 年にこのプラットフォームで簡単に共有しました。

あなたがインターネットがあなたに望んでいる人になれないとき

あなたがインターネットがあなたに望んでいる人になれないとき

私は「列車事故」という言葉が嫌いです。人々は自分自身の道徳的羅針盤に安らぎを覚え、そうすることで自分自身が判断を下していることに気づきます。

Language