ホームページ  >  記事  >  バックエンド開発  >  golang でのビルド中に ExtendedKeyUsage 情報を CSR に提供する問題

golang でのビルド中に ExtendedKeyUsage 情報を CSR に提供する問題

王林
王林転載
2024-02-09 15:03:18667ブラウズ

在 golang 中生成期间向 CSR 提供​​ ExtendedKeyUsage 信息时出现问题

golang での CSR 生成中に、ExtendedKeyUsage に情報を提供する際に問題が発生しました。この問題は、生成された CSR の正確性と有効性に影響を与える可能性があります。 ExtendedKeyUsage は証明書拡張機能の一部であり、証明書の使用目的を指定するために使用されます。正しい ExtendedKeyUsage 情報を CSR に提供することで、特定のシナリオにおける証明書の可用性とセキュリティを確保できます。ただし、golang では、CSR を生成するときに ExtendedKeyUsage 情報が正しく提供できないという問題が発生することがあります。 PHP エディターの Xigua は、読者が同様の問題を解決し、要件を満たす CSR を正常に生成できるように、この記事でこの問題の原因と解決策を詳しく紹介します。

質問内容

奇妙な問題に遭遇しました。 私は、ユーザー指定の入力に基づいて csr を生成する小さな golang ツールを作成しています。目標はほぼ達成できましたが、extendedkeyusage で問題が発生しました。簡単に言えば、それは機能しません。

一部の x509 フィールドの asn1 マーシャリング コード:

リーリー

次に、テンプレートを作成し、csr を正常に生成して保存しました。ほぼ次のとおりです。 リーリー リーリー リーリー

My

extendedkeyusage は空ですが、クライアント認証である必要があります。私が何を間違えたのでしょうか?

楽しみにしています:

リーリー

表示されているのは空のフィールドです。別の oid の異なるバイトセットを使用してみましたが、結果は得られませんでした。

extendedkeyusage フィールドには何も書き込めないようなものです (そうすべきですが)

インポートされた場合:

バージョン: go1.19.3 darwin/amd64

解決策

問題はデータの印刷時だと思います。キー/値は実際にデータ内に存在します。

コードから:

リーリー

oidextensionextendedkeyusage は asn.1 oid 2.5.29.37 で、der エンコーダを使用してエンコードすると「55 1d 25」になります

オンラインでエンコードして、どのようなバイナリが生成されるかを確認できます (例:

https://www.php.cn/link/8e08227323cd829e449559bb381484b7)

asn1keyusagecauth 値は 2 (x509.go で定義された定数) で、der エンコーダを使用して asn.1 ビット文字列にエンコードされると「00 02」になります (最初の 00 はパディング ビット (なし) の数、02 はパディング桁数) 値 2)

次に、証明書リクエストの Base64 値を取得し、asn.1 der デコーダーを使用してデコードします (例:

https://asn1.io/asn1playground)

miibtzccav0caqawgzwxczajbgnvbaytakfvmq8wdqydvqqiewztewruzxkxdzan bgnvbactbln5zg5letetmbega1uechmkc210aensawvuddelmakga1uecxmcsvqx jtajbgnvbamthhntdggtq2xpzw50lvk4cdg1bk1psvnzmgliz0exijagbgkqhkig 9w0bcqeme3ntdghjbgllbnrac210ac5jb20wwtatbgcqhkjopqibbggqhkjopqmb bwncaar4riguoxsyxdaml9f9e2grjumuk8q0jilotb2kadmbz1rocedszuuxkqcr 0vud2aw3vidph1ar4hkqwkm43hxqof4wxayjkozihvcnaqkomu8wttaebgnvhree fzavgrnzbxroy2xpzw50qhntdgguy29tmasga1udjqqeawiiaajaobgnvhq8baf8e bamcaagwdgydvr0paqh/baqdagabmaogccqgsm49bamca0gameuciqdtbj 0atjy f1gy8am2mv7/x3tsebmmvdszkw8l6rvseqigmih8co9nkp0axdmgp9x4kvjjzk9x rw3roydt89d73oa=

リーリー

上の出力を下にスクロールして、ここにあるのを見つけます。

あなたのキー/値は次のとおりです:

リーリー

asn.1 仕様に従って csr をデコードしたいのですが...見つかりません:(

以上がgolang でのビルド中に ExtendedKeyUsage 情報を CSR に提供する問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。