web-dev-qa-db-ja.com

OpenSSLで秘密鍵なしで証明書を作成する

OpenSSLには、CSRの署名が必要な理由があります。CSRの有効性を保証するために、添付された公開鍵の実際の秘密鍵の所有者から要求されたという事実です。まったく問題ありませんが、理論的には、CAは他の方法で有効性を保証できます。特に、CSRが転送中でない場合に有効です。これは、自己署名証明書の場合です。ローカルで発行され、使用されている会社の証明書。私の場合、秘密鍵なしで証明書を作成したいと考えています。証明書はスマートカードで生成され、エクスポートすることはできないためです。また、カードはキーの生成中にCSRを生成しません。

OpenSSLで唯一の公開鍵から証明書を作成するオプションが見つかりません。理論的にはそれは非常によく可能です。

OpenSSLにはそのためのオプションはありますか?他の手段は? X509証明書を作成する必要があります。

ありがとう

4
djozsef

AJ Henderson が示唆するように、完全な解決策はOpenPGPカードにCSRに署名させることです。 gpgsm CLIツールで可能であることがわかりました。 GnuPG-userメーリングリストのDamien Goutte-Gattatが質問に回答しました:

カードに保存されている秘密鍵で署名されたX509 CSRを作成する方法はありますか?

はい、そのためにgpgsm(1)ツールを使用できます。

カードがカードリーダーに挿入されていることを確認してから、

 $ gpgsm --armor --output mycsr.pem --gen-key

必要なキーの種類を選択するように求められたら、「Existing key from card "(カードがリーダーに挿入されていることを確認してください。)使用するカードキー(署名キー、暗号化キー、または認証キー)と将来の証明書の使用目的を選択します。

手順の最後に、CSRに署名するためにPINの入力を求められます。

Scuteのドキュメント には完全な例があります(上記のコマンドの代わりに、廃止予定のヘルパースクリプトであるgpgsm-gencert.shを使用していますが、手順はほとんど同じです)。

したがって、CSRを回避する必要はありません。GnuPGで有効なX509証明書を作成できます。

5
djozsef

はい、あなたはこの事実を回避することができます。

  1. 任意の秘密鍵で偽のcsrを作成する
  2. cAはforce_pubkeyフラグを使用して(ここで説明されているように https://www.openssl.org/docs/manmaster/man1/x509.html )、提供された公開鍵がなくても署名できます。 t csrの生成時に使用した秘密鍵に属するもの。
  3. 必要な公開鍵を持つX509を持っている
2
Valentin Bossi