楕円曲線キーBrainpoolP384t1で署名された自己署名証明書を使用してCentOS 7.6でApache httpd 2.4.6を実行する方法は?

楕円曲線キーBrainpoolP384t1で署名された自己署名証明書を使用してCentOS 7.6でApache httpd 2.4.6を実行する方法は?

楕円曲線キーBrainpoolP384t1で署名された自己署名証明書を使用してCentOS 7.6でApache httpd 2.4.6を実行しようとしていますが、Apacheはそれを有効な鍵として受け入れません。私はすべての指示が正しい場所を指していることを確認します。唯一の問題は、Apacheがキーが有効かどうかを認識しないことです。鍵は暗号化されていません。

ssl_error_logファイルに到達すると、次のようになります(pkcs8を使用)。

[Sun Dec 16 2018 15:15:36.020090] [ssl:error] [pid 8379:tid 140184667797632] AH02203: Init: 秘密鍵が見つかりません。 [Sun Dec 16 2018 15:15:36.020246] [ ssl:error] [pid 8379 :tid 140184667797632] SSL ライブラリ エラー: エラー: 0D0680A8: asn1 エンコード ルーチン: ASN1_5 20297 2018] [ssl:error] [pid 8379:tid 140184 667797632 ] SSL ライブラリ エラー: 0D08303A :asn1 エンコード ルーチン: ASN1_TEMPLATE_NOEXP_D2I: ネストされた asn1 エラー [Sun Dec 16 15 pid 8379:tid 140184667797632] SSLライブラリエラー:エラー:0D068 0A8:ASN1コード温度:ASN1_CHECK_TL CN:タグエラー[Sun 16 15: 15: 36.020356 2018] [SSL:エラー] [pid 837 0d07803aコードコードスペシャリスト1_item_ex_d2i:ネストされたasn1エラー(タイプ= RSA)[日12月16日15:36.020386 2018] [SSL:エラー] rsa_priv_decode: rsa lib [rsa lib: rsa lib [rsa lib [sun dec 16 15:15:15: 15:36.0202020415 2018:SS] 8379: tid 140184667797632] SSL ライブラリ エラー:0 _TLEN:無効なタグ[ Sun Dec 16 15:15:36.020444 2018] [ssl: エラー] [pid 8 379: tid 140184667797632 ] ライブラリ エラー: エラー: 0D07803A: asn1 エンコード ルーチン: ASN1_ITEM_EX _INFO)

pkcs8 なし

[Mon Dec 17 2018 01:24:47.455770] [ssl: error] [pid 18124: tid 139679037429888] AH02203: 初期化: 秘密鍵が見つかりません。 [Mon Dec 17 2018 01:24:47.455902 ] [ssl:error] [pid 18124 :tid 139679037429888] SSL ライブラリ エラー: エラー: 0D0680A8: asn1 エンコード ルーチン: ATL1: .456051 2018] [ssl:error] [pid 18124: tid 139679037429888] SSL ライブラリ エラー: エラー: 0D08303A : asn1 エンコード ルーチン: ASN1_TEMPLATE_NOEXP_D2I: 入れ子になった asn1 エラー [Mon Dec 17 0 error] [pid 18124: tid 1396790374 29888] SSLライブラリエラー:エラー:0D0680A8:asn1エンコーディングルーチン:ASN1_CHECK_ JA:タグエラー[Mon Dec 17 01:24:47.456121 2018] [ssl:98 ] SSLライブラリエラー:エラー: 0D07803A: asn1 エンコード ルーチン: ASN1_ ITEM_EX_D2I: 入れ子になった asn1 エラー (タイプ=RSA) [月 12 月 17 01:24:47.456152 2018] [ssl: エラー] 04093004: rsa ルーチン: OLD_RSA_PRIV_DECODE: RSA lib [ Mon Dec 17 2018 01:24:47.456180] [ssl: エラー ] [PID 18124: tid 139679037429888] K_TLEN:無効なラベル[Mon Dec 17 01:24 :47.456210 2018] [ssl:エラー] [pid 18124: tid 13967903742 9888] SSLライブラリエラー:エラー:0D07803A:asn1エンコードルーチン:ASN1_ITEM_EX_2 FO)

注:aes-256-cbcで暗号化されたrsaキーを使用して実行しましたが、今ecキーを使用したいと思います。

答え1

エラーメッセージを表示すると、秘密鍵がpkcs#8ファイルに存在するように見えます。 ~からRFC5958秘密鍵はDER形式にすることができます。

  Interoperability considerations:

     The PKCS #8 object inside this media type MUST be DER-encoded
     PrivateKeyInfo.

したがって、秘密鍵をPEM形式に変換する必要があるかもしれません。

openssl pkey -inform DER -in key.p8 -outform PEM -out key.pem


あなたの質問から鍵と証明書をどのように生成したかはわかりません。ここに私のDebian Busterシステムで実行される簡単な例があります。

楕円曲線秘密鍵の生成

openssl ecparam -out ec_key.pem -name brainpoolP384t1 -genkey

openssl pkey -in ec_key.pem -text

-----BEGIN PRIVATE KEY-----
MIG6AgEAMBQGByqGSM49AgEGCSskAwMCCAEBDASBnjCBmwIBAQQwKTnt9uvr1aJS
tXEsz3MCtPbojeYvDKOXm9eEllpsErzSdeBUs0c7kyJYnY00N9pwoWQDYgAED2+w
xryVMzZh/nW6mUx3WxWTjXf02/17sZPpkKHcqtj3TObcA7yjpwNs+PriRBEkiyuU
jbXdeTjr79xTLcElXIvJkEp5vu4qijBQ8CRdqc5BZgGWw0vV84xNtB5xKOpc
-----END PRIVATE KEY-----
Private-Key: (384 bit)
priv:
    29:39:ed:f6:eb:eb:d5:a2:52:b5:71:2c:cf:73:02:
    b4:f6:e8:8d:e6:2f:0c:a3:97:9b:d7:84:96:5a:6c:
    12:bc:d2:75:e0:54:b3:47:3b:93:22:58:9d:8d:34:
    37:da:70
pub:
    04:0f:6f:b0:c6:bc:95:33:36:61:fe:75:ba:99:4c:
    77:5b:15:93:8d:77:f4:db:fd:7b:b1:93:e9:90:a1:
    dc:aa:d8:f7:4c:e6:dc:03:bc:a3:a7:03:6c:f8:fa:
    e2:44:11:24:8b:2b:94:8d:b5:dd:79:38:eb:ef:dc:
    53:2d:c1:25:5c:8b:c9:90:4a:79:be:ee:2a:8a:30:
    50:f0:24:5d:a9:ce:41:66:01:96:c3:4b:d5:f3:8c:
    4d:b4:1e:71:28:ea:5c
ASN1 OID: brainpoolP384t1

この特別な曲線は注目に値します。互換性がないほとんどのブラウザまたは一般的に使用されるクライアントソフトウェアと互換性があります。

以下は、NIST Curve EC キーを生成する例です。互換性ほとんどのブラウザと一般的に使用されるクライアントソフトウェアで動作します。

NIST ECキーの生成

openssl ecparam -out ec_key_nist.pem -name secp384r1 -genkey

openssl pkey -in ec_key_nist.pem -text

-----BEGIN PRIVATE KEY-----
MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDB1sa6wudssPDi6sfEg
V7J4xTkn3WF4veaMbcw4GAcL8PUrciXjt5jg8J3wbyvB9ZGhZANiAARLBE/WuM1e
DjYNETD+2oEoej6ZbhDvIRbxqxBBuvVna1hQQW76h3MsavEtBNbkAQZHQ9KZCScg
td5N/OhqQ+K7qXSr7F0KHTp49D9grufK+R6/uNoXtT8yiHO5yAI4lok=
-----END PRIVATE KEY-----
Private-Key: (384 bit)
priv:
    75:b1:ae:b0:b9:db:2c:3c:38:ba:b1:f1:20:57:b2:
    78:c5:39:27:dd:61:78:bd:e6:8c:6d:cc:38:18:07:
    0b:f0:f5:2b:72:25:e3:b7:98:e0:f0:9d:f0:6f:2b:
    c1:f5:91
pub:
    04:4b:04:4f:d6:b8:cd:5e:0e:36:0d:11:30:fe:da:
    81:28:7a:3e:99:6e:10:ef:21:16:f1:ab:10:41:ba:
    f5:67:6b:58:50:41:6e:fa:87:73:2c:6a:f1:2d:04:
    d6:e4:01:06:47:43:d2:99:09:27:20:b5:de:4d:fc:
    e8:6a:43:e2:bb:a9:74:ab:ec:5d:0a:1d:3a:78:f4:
    3f:60:ae:e7:ca:f9:1e:bf:b8:da:17:b5:3f:32:88:
    73:b9:c8:02:38:96:89
ASN1 OID: secp384r1
NIST CURVE: P-384

自己署名サーバー証明書の作成

鍵が生成されると、自己署名サーバー証明書は1行の証明書になります。

openssl req -new -key ec_key.pem -x509 -nodes -days 365 -out cert.pem

2つのECキーを使用してテストした結果、brainpoolP384t1曲線が私のブラウザで機能しないことが確認されました。ただし、NIST EC キーと証明書は、すべてのクライアントソフトウェアで期待どおりに機能します。

テストソフトウェア:

  1. ブレーブブラウザ(0.25.2)
  2. Firefox(60.3.0)
  3. 妖精(3.7.0)
  4. リンス(2.8.9rel.1)

関連情報