カスタムの crypto.Signer 実装を使用して X.509 証明書を生成できない
php エディターの Youzi は、X.509 証明書の生成に関する問題を紹介します。カスタムの crypto.Signer 実装を使用して証明書を生成すると、使用できない問題が発生することがあります。この問題により、開発者は解決方法について混乱する可能性があります。この記事では、この問題の原因を調査し、開発者が独自の X.509 証明書を正常に生成できるようにするための解決策をいくつか紹介します。
質問内容
hsm に保存されている rsa キー ペアに基づいて x.509 証明書を生成しようとしています。私はこの pkcs #11 実装を使用して hsm と通信します。
暗号オブジェクトは後者に保存されているため、実行したい操作 (署名など) に秘密キーが必要な場合は、「秘密キーにアクセス」するために crypto.signer インターフェイスを実装する必要があります。これが実装です。
リーリーこの実装は機能します。たとえば、csr を作成するには、createcertificaterequest 関数で csr に署名するための秘密キー (priv any
パラメーター) が必要です。ここで rsasigner
インスタンスを提供します。
createcertificate 関数も似ています。パラメータ pub
は生成される証明書の公開鍵、priv
は署名者の秘密鍵です。
以下のコードでは、自己署名 x.509 証明書を生成しようとしています。そのため、API によれば、template
パラメーターと parent
パラメーターは同じです。
キーのタイプ (rsa または ec) に関係なく、この関数は次のエラーを返します。
リーリーこのエラーは、crypto.signer
の実装が正しく完了していない場合に返されます。
楕円曲線上のキーペアを使用して同じことをしようとして crypto.signer
を実装しましたが、エラーは同じです。
sign
関数でさまざまなハッシュ アルゴリズムも試しましたが、何も変わりませんでした。
このエラーは crypto.signer
の実装に起因しているようですが、CSR の生成に使用できます。
解決策
この問題の解決策は数か月前に見つかりましたが、時間をかけて答えを共有することはありませんでしたが、今がその時です。
pkcs #11 経由で直接署名する場合は、ここで参照されている digestinfo 値をハッシュの前に手動で付けることで、ハッシュ プレフィックスを管理する必要があります: https://www .rfc-editor.org /rfc/rfc3447#page-43。
より正確には、rsassa-pkcs1-v1_5 署名の場合、実際の署名関数への入力は asn.1 der でエンコードされた構造です。 pkcs #11 には構造の生成方法を認識するハッシュ固有のメカニズム (例: ckm_sha256_rsa_pkcs) がありますが、それらはすべてデータがハッシュされていないことを前提としています。 暗号通貨の場合はそうではありません。そのため、生の署名操作のみを実行する汎用の cka_rsa_pkcs メカニズムを使用する必要があります。これは、asn.1 構造を自分で生成する必要があることを意味します。これは、使用するすべてのハッシュに正しいプレフィックスを指定するだけで実行できます。
タイプcrypto.signeropts の opts パラメータを使用すると、次の場合にタイプ crypto.hash のハッシュ関数の識別子を取得できます。 sign() 関数を使用して、正しいプレフィックスを適用します。 リーリー
それは魔法のように機能します。ただし、もっと良いことがあります。
ckm_rsa_pkcs メカニズムは、rsassa-pkcs1-v1_5 タイプの署名を提供します。この古い署名スキームについては、興味のある読者がご自身で調査していただくようお願いします。この古い署名スキームは新しい製品やソフトウェアでは使用すべきではありません。
実際、rsassa-pss 型署名を提供する ckm_rsa_pkcs_pss メカニズムを使用することをお勧めします。
この原則から出発して、これが私が現在使用している実装です。リーリー
したがって、プレフィックスは必要なくなりましたが、ハッシュ アルゴリズム識別子と使用する署名アルゴリズムと使用する mgf の対応付けが必要になります。最後に、Go では、使用される
署名アルゴリズム は、x509.sha256withrsa、x509.sha384withrsa、または x509.sha512withrsa## ではなくなりました #ただし、sha256withrsapss、sha384withrsapss、および sha512withrsapss です。 署名おめでとうございます。
以上がカスタムの crypto.Signer 実装を使用して X.509 証明書を生成できないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









1。OKXEUYIExchangeのWebバージョンを入力してください。クリックして2を保存します。OKXEUYIExchangeアプリのリンクをクリックして、3をクリックして3を保存します。公式Webサイトを入力した後、Clear Interfaceはログインと登録ポータルを提供します。ユーザーは、既存のアカウントにログインするか、自分の状況に応じて新しいアカウントを登録することを選択できます。 リアルタイムの市場条件を表示したり、取引を行ったり、資産を管理したりするかどうかにかかわらず、OKX Webバージョンは、初心者や退役軍人に適したシンプルでスムーズな運用体験を提供します。 簡単な経験のために、今すぐOKX公式ウェブサイトにアクセスしてください

この記事では、公式ウェブサイトへのアクセスから登録の完了までのすべてのステップをカバーする詳細なgate.io登録チュートリアルを提供します。登録情報の記入、検証、ユーザー契約の読み取りなどを説明します。この記事では、登録の成功後、レアルネーム認証を完了した後のセキュリティ対策を強調し、初心者からのヒントを提供して、デジタルアセットの交通旅を開始するためのヒントを提供します。

OKXはグローバルデジタル資産取引プラットフォームです。その主な機能には、1。デジタル資産の売買(スポット取引)、2。デジタル資産間の取引、3。4。DiversifiedTrading製品(デリバティブなど)の提供、5。Asset付加価値サービスの提供、6。便利な資産管理。

この記事では、OK Exchangeの公式Webバージョンを使用してログインする方法について詳しく説明します。ユーザーは、ブラウザで「OK Exchange公式Webバージョン」を検索する必要があります。公式Webサイトを入力した後、ユーザー名とパスワードを入力してログインしてログインします。 何を待っていますか? OK Exchangeの公式Webサイトにアクセスして、デジタル資産の旅を開始してください!

この記事では、Binance PCバージョンのログインと登録の完全なガイドを提供します。最初に、Binance PCバージョンでログインする手順を詳細に説明しました。ブラウザで「Binance公式Webサイト」を検索し、ログインボタンをクリックし、電子メールとパスワードを入力し(検証コードを入力するには2FAを有効にしてください)、次にログインします。記事では、登録プロセスを説明します。最後に、この記事はアカウントのセキュリティも強調し、ユーザーに公式ドメイン名、ネットワーク環境に注意を払い、パスワードを定期的に更新し、アカウントのセキュリティを確保し、ビナンスPCバージョンが提供するさまざまな機能のより良い使用、市場条件の視聴、取引の実施、資産の管理などを確保します。

この記事では、Binance Academy、Okx Learn、Coingecko、Cryptoslate、Coindesk、Investopedia、Coinmarketcap、Huobi University、Coinbase Learn、Cryptocompareなど、10の有名な仮想通貨関連アプリの推奨Webサイトを推奨しています。これらのWebサイトは、仮想通貨市場データ、価格動向分析などの情報を提供するだけでなく、基本的なブロックチェーンの知識、取引戦略、さまざまな取引プラットフォームアプリのチュートリアルとレビューなどの豊富な学習リソースを提供し、ユーザーがそれらをよりよく理解し、利用するのに役立ちます。

世界のトップにランクされており、スポット、契約、Web3ウォレットなどのすべてのカテゴリのトランザクションをサポートしています。セキュリティと低いハンドリング料金があります。コンプライアンスと高い流動性で知られる長い歴史を持つ包括的な取引プラットフォームは、多言語サービスをサポートしています。業界のリーダーは、通貨取引、レバレッジ、オプションなどをカバーし、強力な流動性を備えており、BNB控除料をサポートします。

この記事では、Binance、Okx、Gate.io、Kraken、Bybit、Coinbase、Kucoin、Bitget、Gemini、Bitstampなど、有名なWeb3トレーディングプラットフォームのトップ10をリストします。 この記事では、通貨の数、取引タイプ(スポット、先物、オプション、NFTなど)、取り扱い手数料、セキュリティ、コンプライアンス、ユーザーグループなどなど、各プラットフォームの特性を詳細に比較します。高周波トレーダー、契約取引愛好家、またはコンプライアンスとセキュリティに焦点を当てた投資家であろうと、そこから参照情報を見つけることができます。
