私は以下のコードを使って鍵を生成しています
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つ質問があります
パスフレーズのプロンプトをスキップするにはどうすればいいですか?それは私がそうするために合理的に安全でしょうか?それは誰もが証明書をハックすることができるようにする必要がありますのようにダウンライト愚かであるべきではありませんように)
国名や組織名などのプロンプトを避けるにはどうしたらいいでしょうか?コマンドプロンプトで与えることができればいいのですが(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
を参照してください
具体的には、あなたの質問に対応し、どのオプションが有効であるかをより明確にします
-nodes
フラグは鍵を暗号化しないことを示しているので、パスワードは必要ありません。-passout arg
フラグを使うこともできます。arg のフォーマット方法についてはopenssl(1)
man ページのPASS PHRASE ARGUMENTS
を参照してください-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-fips
をCentOS 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