타원 곡선 키 BrainpoolP384t1로 서명된 자체 서명 인증서를 사용하여 CentOS 7.6에서 Apache httpd 2.4.6을 실행하려고 하는데 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_CHECK_TLEN: 잘못된 태그 [Sun Dec 16 15:15:36.020297 2018] [ssl:error] [pid 8379:tid 140184 667797632 ] SSL 라이브러리 오류: 0D08303A :asn1 인코딩 루틴: ASN1_TEMPLATE_NOEXP_D2I: 중첩된 asn1 오류 [Sun Dec 16 15:15:36.020327 2018] [ssl:error] [pid 8379:tid 140184667797632] SSL 라이브러리 오류: 오류: 0D068 0A8: ASN1 코드 온도: ASN1_CHECK_TL CN: 태그 오류 [Sun 16 15: 15: 36.020356 2018] [SSL: 오류] [pid 8379: TID 14018466797632] SSL 라이브러리 오류: 0d07803a 코드 코드 전문가 1_item_ex_d2i: 중첩된 asn1 오류(유형=RSA) [일 12월 16일 15:36.020386 2018 ] [SSL: 오류] [PID 8379: TID 140184667797632] SSL 라이브러리 오류: 오류: 04093004: RSA 루틴: RSA 루틴: old_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 라이브러리 오류: 오류: 0D0680A8: asn1 인코딩 루틴: ASN1_CHECK_TLEN: 잘못된 태그 [Sun Dec 16 15:15:36.020444 2018] [ssl: 오류] [pid 8 379: tid 140184667797632 ] 라이브러리 오류: 오류: 0D07803A: asn1 인코딩 루틴: ASN1_ITEM_EX_D2I: 중첩된 asn1 오류(유형=PKCS8_PRIV_KEY_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 인코딩 루틴: ASN1_CHECK_TLEN: 잘못된 태그 [Mon Dec 17 01:24:47.456051 2018] [ssl:error] [pid 18124: tid 139679037429888] SSL 라이브러리 오류: 오류: 0D08303A : asn1 인코딩 루틴: ASN1_TEMPLATE_NOEXP_D2I: 중첩된 asn1 오류 [Mon Dec 17 01:24:47.456090 2018] [ssl:error] [pid 18124:tid 1396790374 29888] SSL 라이브러리 오류: 오류:0D0680A8: asn1 인코딩 루틴: ASN1_CHECK_ KO: 태그 오류 [Mon Dec 17 01:24:47.456121 2018] [ssl:error] [pid 18124:tid 139679037429888] SSL 라이브러리 오류: 오류: 0D07803A: asn1 인코딩 루틴: ASN1_ ITEM_EX_D2I: 중첩된 asn1 오류(유형=RSA) [월 12월 17 01:24:47.456152 2018] [ssl: 오류] [pid 18124: tid 139679037429888] SSL 라이브러리 오류: 오류: 04093004: rsa 루틴: OLD_RSA_PRIV_DECODE: RSA lib [ Mon Dec 17 2018 01:24:47.456180] [ssl: 오류 ] [PID 18124: tid 139679037429888] SSL 라이브러리 오류: 오류: 0D0680A8: asn1 인코딩 루틴: ASN1_CHECK_TLEN: 잘못된 레이블 [Mon Dec 17 01:24 :47.456210 2018] [ssl: 오류] [pid 18124: tid 13967903742 9888] SSL 라이브러리 오류 : 오류: 0D07803A: asn1 인코딩 루틴: ASN1_ITEM_EX_D2I: 중첩된 asn1 오류(유형=PKCS8_PRIV_KEY_INFO)
참고: 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
자체 서명된 서버 인증서 만들기
키가 생성되면 자체 서명된 서버 인증서는 한 줄 인증서가 됩니다.
openssl req -new -key ec_key.pem -x509 -nodes -days 365 -out cert.pem
두 개의 EC 키를 사용하여 테스트한 결과 brainpoolP384t1
곡선이 내 브라우저에서 작동하지 않는 것으로 확인되었습니다. 그러나 NIST EC 키와 인증서는 모든 클라이언트 소프트웨어에서 예상대로 작동합니다.
테스트 소프트웨어:
- 브레이브 브라우저 (0.25.2)
- 파이어폭스(60.3.0)
- 요정(3.7.0)
- 링스(2.8.9rel.1)