php エディターの Strawberry は、署名証明書を導入するときに、認証キー識別子 (SKID) が署名プロセスで重要な役割を果たすことを指摘しました。証明書が署名されると、SKID が証明書にコピーされ、証明書の承認されたキーを識別します。この識別子の存在は、証明書の信頼性と合法性を保証するのに役立ち、その後の証明書の検証と管理も容易にします。 SKID のコピーは、証明書に署名するときに必要な手順であり、証明書の使用と保守において重要な役割を果たします。
csr と spacemonkeygo/openssl
ラッパーを使用して証明書に署名しようとしています。
証明書に署名するためのコンソールの openssl コマンドは期待どおりに機能し、有効な証明書を取得できます。
リーリースクリーンショットからわかるように、スキッドと発行者の keyid は異なります。
ただし、Go のコードは間違った証明書を提供します。skid には、証明書を発行した keyid の正確な値が含まれています。これにより、「発行者」の無効な値が「認証キー識別子」にコピーされます。スキッドが発行者の keyid と同じであるため、証明書が自己発行であると「考えられ」ます。
リーリー(生成されたものは正しいです)
#setissuer を呼び出さない場合、スキッドは新たに生成されますが、生成された証明書は依然として「無効」と表示されます。
更新: 2 つのラッパー (
spacemonkey/go と
pyopenssl) に拡張機能を追加した実装を比較しました。
###行く:###
リーリー
リーリー
明らかな違いは API です。Python バージョンは、オーバーロードのパラメーターとしてsubject
とissuer を受け入れます。 go バージョンにはありません。
実装の違いは次のとおりです:
Python での呼び出し
x509v3_ext_nconf
x509v3_ext_conf_nid
唯一の方法は、C バインディングを手動で使用し、「Python のように行う」ことのようです。
回避策スキッドとauthoritykeyidentifierを追加する賢い回避策を実装しました。生成された証明書は有効です。ただし、x *c.x509 メンバーはエクスポートされないため、それらにアクセスする唯一の方法は、安全でないポインターとキャストを使用することです。
これは推奨されるアプローチではありませんが、spacemonkey/go
が更新されるまでの 1 つの方法です (すぐに更新されると思われます)。
リーリー
以上が証明書に署名すると、認証キー識別子が SKID にコピーされます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。