openssl – キーのパスワードプロンプトとDN情報のプロンプトを避ける

openssl prompt ssl-certificate x509

私は以下のコードを使って鍵を生成しています

apt-get -qq -y install openssl;
mkdir -p /etc/apache2/ssl;
openssl genrsa -des3 -out server.key 1024;
openssl req -new -key server.key -out server.csr;
cp server.key server.key.org;
openssl rsa -in server.key.org -out server.key;
openssl x509 -req -days 12000 -in server.csr -signkey server.key -out server.crt;
mv server.crt  /etc/apache2/ssl/cert.pem;
mv server.key  /etc/apache2/ssl/cert.key;
rm -f server.key.orig;
rm -f server.csr

2つ質問があります

  1. パスフレーズのプロンプトをスキップするにはどうすればいいですか?それは私がそうするために合理的に安全でしょうか?それは誰もが証明書をハックすることができるようにする必要がありますのようにダウンライト愚かであるべきではありませんように)

  2. 国名や組織名などのプロンプトを避けるにはどうしたらいいでしょうか?コマンドプロンプトで与えることができればいいのですが(manページにはOpenSSLのトップレベルのオプションしか表示されません)

  96  None  2010-12-27


ベストアンサー

編集:これは圧倒的に私の最も人気のある回答であり、それは数年前から続いているので、私はECDSAのバリアントを追加しました。あなたがECDSAを使用することができる場合は、あなたがすべきです


コマンドラインですべての情報を提供することができます

ワンステップ自己署名型パスワードレス証明書の生成

RSA Version

openssl req \
-new \
-newkey rsa:4096 \
-days 365 \
-nodes \
-x509 \
-subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \
-keyout www.example.com.key \
-out www.example.com.cert

ECDSA version

openssl req \
-new \
-newkey ec \
-pkeyopt ec_paramgen_curve:prime256v1 \
-days 365 \
-nodes \
-x509 \
-subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \
-keyout www.example.com.key \
-out www.example.com.cert

すべての openssl サブコマンドには独自の man ページがあります。man req を参照してください


具体的には、あなたの質問に対応し、どのオプションが有効であるかをより明確にします

  1. -nodes フラグは鍵を暗号化しないことを示しているので、パスワードは必要ありません。-passout arg フラグを使うこともできます。arg のフォーマット方法については openssl(1) man ページの PASS PHRASE ARGUMENTS を参照してください

  2. -subj フラグを使用して、件名を指定することができます(例は上)

164  bahamat  2010-12-27


-passinのオプションが効かないのか?

file:pathname形式では、そのファイルのパーミッションを600にすればかなり安全です

11  9000  2010-12-27


受け入れられた回答には、いくつかの小さな修正が必要です。ECライン

-newkey ec
-pkeyopt ec_paramgen_curve:prime256v1

should be:

 -newkey ec \
-pkeyopt ec_paramgen_curve:prime256v1 \

MacOS – OpenSSL 1.0.2fがbrew経由でインストールされていることを確認したところ、以下のような回答が返ってきました

  • 利用可能な楕円曲線をリストアップします

    $ openssl ecparam -list_curves
    
  • キーファイルを生成する

    $ openssl ecparam -name secp256k1 -out secp256k1.pem
    
  • パスワード プロンプトなしで証明書を生成するには

    openssl req \
    -new \
    -newkey ec:secp256k1.pem \
    -days 365 \
    -nodes \
    -x509 \
    -subj "/C=US/ST=FL/L=Ocala/O=Home/CN=example.com" \
    -keyout server.key \
    -out server.crt
    
  • 証明書を見るには

    $ openssl x509 -noout -text -in server.crt
    

5  Andrei Sura  2016-06-08


以下のコマンドを試してみてください

openssl genrsa -des3 -out user.key -passout pass:foo 1024

サボっている部分は-passout pass:foo

3  kenorb  2014-01-16


bahamatさんの回答は素晴らしいものでした。残念ながら、opensslのいくつかのバージョンでは、1つのコマンドでECDSA証明書を作成しようとするとエラーが発生します。エラーは以下のようになります

routines:EVP_PKEY_CTX_ctrl:invalid operation:pmeth_lib.c:404

openssl 1.0.1e-fipsCentOS 7で使っていました

以下の3つのコマンドで証明書を作成するとうまくいくようです

openssl ecparam -genkey -name prime256v1 -out key.pem
openssl req -new -key key.pem -out csr.pem -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com"
openssl req -x509 -days 365 -key key.pem -in csr.pem -out certificate.pem

2  jxmallett  2016-02-20


タイトルとURLをコピーしました