ホームページ >バックエンド開発 >Golang >X509v3 認証キー識別子に DirName とシリアル番号を追加する方法

X509v3 認証キー識別子に DirName とシリアル番号を追加する方法

王林
王林転載
2024-02-10 10:54:081045ブラウズ

如何将 DirName 和序列号添加到 X509v3 授权密钥标识符

phpエディタStrawberryでは、X509v3認証キー識別子にDirNameとシリアル番号を追加する方法を紹介します。ネットワーク通信において、認証キー識別子 (X509v3) は、通信相手の身元を確認するために使用されるデジタル証明書です。 DirName は証明書所有者の名前を指し、シリアル番号は証明書を一意に識別するために使用される番号です。 DirNameやシリアル番号を付加することで証明書の可読性や一意性が高まり、通信の安全性や信頼性が向上します。次に、その方法を詳しく説明します。

質問内容

opensslとgoコードを使用してクライアント証明書を生成しようとしています。必要な拡張子を持つ証明書を生成する openssl スクリプトがあり、go コードを使用して同じ結果を達成したいと考えています。

opensslを使用する

オプション.ext

openssl で使用される options.ext ファイルには、次の拡張子が含まれています:

リーリー

クライアント証明書.shの生成

現在私が持っている openssl スクリプトは次のとおりです:

リーリー

証明書を生成した後、次のコマンドを使用して詳細を表示できます:

リーリー

生成された証明書の構造は次のとおりです:

リーリー

次のようになります:

リーリー

実行コード

私の Go コードでは、x509 パッケージを使用して証明書を生成します。ただし、x509v3 認証キー識別子拡張機能を設定する方法がわかりません。私の go コードの関連部分は次のとおりです:

リーリー

x509v3 認証キー識別子にディレクトリ名とシリアル番号を追加するにはどうすればよいですか?

###関連している###

http://oid-info.com/get/2.5.29.35
  • https://github.com/golang/go/issues/47096 (元の問題)
  • これを試してみると:
リーリー ###消す:###
basicconstraints=ca:false
authoritykeyidentifier=keyid,issuer
subjectkeyidentifier=hash
keyusage=digitalsignature
extendedkeyusage=clientauth

Solution

authoritykeyidentifiervalue

は、

asn1.marshal

を使用して生成できます。次のデモでは、rfc 5280に従って構造体 authkeyid > を定義し、この構造体を使用して値を生成します。 リーリー 16 進エンコード値は次のとおりです: リーリー 定义了 struct 16 進文字列は、asn.1

:

などの JavaScript デコーダを使用して取得できます。

次の C# デモでも同じ結果が得られます:

リーリー 更新

:

これは、メール アドレス

を含む gen の更新バージョンです。 リーリー

oid は非推奨であることに注意してください (

http://oid-info.com/get/1.2.840.113549.1.9.1 を参照)。 .netにも含まれていません。

以上がX509v3 認証キー識別子に DirName とシリアル番号を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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