ホームページ >バックエンド開発 >Golang >x509証明書から文字列形式でサブジェクト名を生成します

x509証明書から文字列形式でサブジェクト名を生成します

WBOY
WBOY転載
2024-02-11 10:00:101237ブラウズ

从字符串格式的 x509 证书生成主题名称

php Editor Strawberry x509 証明書から文字列形式でサブジェクト名を生成することは重要な操作であり、開発者が証明書から重要な情報を抽出するのに役立ちます。 x509 証明書を文字列形式で解析すると、証明書の発行者、有効期間、公開キー、その他の情報を含む証明書のサブジェクト名を取得できます。このプロセスは、安全なネットワーク通信を構築し、証明書の正当性を検証し、ユーザーのプライバシーを保護するために重要です。 PHP では、OpenSSL 拡張機能によって提供される関数を使用してこの関数を実装し、x509 証明書を簡単かつ効率的に処理できます。

質問内容

x509.certificateから識別名を生成しようとしています。

私が期待する形式は次のとおりです:

リーリー

(一部の値をラベルに置き換えました)

私のコードでは、次のように、dnqualifier 部分を除いた期待される文字列が得られます。 リーリー

ここにあります、 2.5.4.46 は、「dnqualifier」の asn.1 オブジェクト ID です。 参照: リンク 値は 16 進数の文字列のように見えます。

識別名を予期した形式で取得する標準的な方法 (または簡単な回避策) はありますか?つまり、オブジェクト識別子の代わりにテキスト「dnqualifier」が表示され、16 進数の代わりに実際の文字列値が表示されます。

私のコードは次のようになります:

リーリー

このコード

certificate.subject.string() からの出力は次のとおりです。 cn=,ou=,o=,2.5.4.46=#131c537771614a5531514c2449444e4846373755547a1f5749653955303d" ###加えて、### リーリー ###そして### リーリー

どちらも役に立ちません。

解決策

標準ライブラリは、

限定された属性リストを提供するだけです

:

リーリー

他のプロパティの場合、オブジェクト識別子を名前として使用し、可能な場合は値を 16 進文字列としてエンコードします (

(rdnsequence).string を参照): リーリー

カスタマイズされた文字列を取得するためのノブは提供されません。だから、自分たちでやらなければいけないんです。

必要なプロパティをリストし、それらを certificate.subject.tordnsequence().string()

から返される文字列に追加することをお勧めします。このような:### リーリー

出力:

リーリー

以上がx509証明書から文字列形式でサブジェクト名を生成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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