Ubuntu 12.04에는 이전 OpenSSL 0.9.8 버전과 약간 다른 기본값을 가진 OpenSSL 1.0.1이 제공됩니다.
무엇보다도 openssl req -newkey rsa:2048
RSA 키를 생성하는 데 사용 하는 경우 PKCS # 8 형식의 키로 끝납니다 . PEM 형식으로 표현 된이 키들은보다 일반적인 -----BEGIN PRIVATE KEY-----
헤더를 가지고 있으며 어떤 키 (RSA, DSA, EC) 키인지는 알려주지 않습니다.
이전에는 OpenSSL 0.9.8에서 키는 항상 PKCS # 1 형식 으로 PEM으로 표시되었으며 헤더는 -----BEGIN RSA PRIVATE KEY-----
이었습니다.
이로 인해 다음과 같이 간단하게 머리글과 바닥 글을 변경할 수 없습니다.
-----BEGIN PRIVATE KEY-----
에
-----BEGIN RSA PRIVATE KEY-----`
그것은 같은 것이 아니며 작동하지 않습니다. 대신을 사용하여 키를 이전 형식으로 변환해야합니다 openssl rsa
. 이처럼 :
openssl rsa -in key_in_pkcs1_or_pkcs8.pem -out key_in_pkcs1.pem
Ubuntu 12.04의 MySQL (v5.5.35)은 yaSSL (v2.2.2)이라는 SSL 구현을 사용하고 있습니다. 키가 PKCS # 1 형식이어야하고 OpenSSL 1.0 이상에서 사용되는 PKCS # 8 형식을 지원하지 않습니다. 이 스레드의 다른 게시물에서 제안한 것처럼 단순히 헤더와 바닥 글을 변경하면 MySQL / yaSSL은 불평하지 않지만 연결할 수 없으며 대신 다음과 같은 오류가 발생합니다.
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
Ubuntu 14.04 에는 OpenSSL 1.0.1f 및 새로운 설정이 포함되어 있습니다. 무엇보다도 이전 버전에서 사용되었던 SHA1 대신 SHA256 다이제스트를 사용하여 인증서를 생성합니다. 기본적으로 MySQL과 함께 번들로 제공된 yaSSL 버전은이를 지원하지 않습니다.
MySQL과 함께 사용할 인증서를 생성하는 경우 RSA 키가 기존 PKCS # 1 PEM 형식으로 변환되고 인증서가 SHA1 다이제스트를 사용하고 있는지 확인하십시오.
다음은 고유 한 CA, 서버 인증서 및 클라이언트 인증서를 생성하는 방법에 대한 예입니다.
# Generate a CA key and certificate with SHA1 digest
openssl genrsa 2048 > ca-key.pem
openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
# Create server key and certficate with SHA1 digest, sign it and convert
# the RSA key from PKCS #8 (OpenSSL 1.0 and newer) to the old PKCS #1 format
openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem > server-req.pem
openssl x509 -sha1 -req -in server-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
openssl rsa -in server-key.pem -out server-key.pem
# Create client key and certificate with SHA digest, sign it and convert
# the RSA key from PKCS #8 (OpenSSL 1.0 and newer) to the old PKCS #1 format
openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout client-key.pem > client-req.pem
openssl x509 -sha1 -req -in client-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
openssl rsa -in client-key.pem -out client-key.pem