Ubuntu 12.04, eski OpenSSL 0.9.8 sürümünden biraz farklı varsayılanlara sahip bir OpenSSL 1.0.1 ile birlikte gelir.
Diğer şeylerin yanı sıra, openssl req -newkey rsa:2048
bir RSA anahtarı oluşturmak için kullanıyorsanız , PKCS # 8 adlı bir biçimde bir anahtarla sona erersiniz . PEM biçiminde gösterilen bu tuşlar, daha genel bir -----BEGIN PRIVATE KEY-----
başlığa sahiptir ve bu, size hangi tür (RSA, DSA, EC) anahtarın olduğunu söylemez.
Önceden, OpenSSL 0.9.8 ile anahtarlar her zaman PEM olarak gösterilen PKCS # 1 adlı bir formata sahipti -----BEGIN RSA PRIVATE KEY-----
.
Bu nedenle üstbilgi ve altbilgiyi basitçe değiştiremezsiniz:
-----BEGIN PRIVATE KEY-----
için
-----BEGIN RSA PRIVATE KEY-----`
Aynı şey değil ve işe yaramaz. Bunun yerine, anahtarı kullanarak eski biçime dönüştürmeniz gerekir openssl rsa
. Bunun gibi:
openssl rsa -in key_in_pkcs1_or_pkcs8.pem -out key_in_pkcs1.pem
Ubuntu 12.04'teki MySQL (v5.5.35) yaSSL (v2.2.2) adında bir SSL uygulaması kullanıyor. Anahtarların PKCS # 1 biçiminde olmasını bekler ve OpenSSL 1.0 ve daha yenileri tarafından kullanılan PKCS # 8 biçimini desteklemez. Başlık ve altbilgiyi değiştirirseniz, bu konudaki diğer yazılar tarafından önerildiği gibi, MySQL / yaSSL şikayet etmez, ancak bağlanamazsınız ve bunun gibi bir hatayla sonuçlanırsınız:
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
Ubuntu 14.04, OpenSSL 1.0.1f ve yeni ayarlarla geliyor. Diğer şeylerin yanı sıra, önceki sürümlerde kullanılan SHA1 yerine SHA256 özeti ile sertifika üretecektir. Bu arada, MySQL ile birlikte gelen yaSSL sürümü de bunu desteklemiyor.
MySQL ile kullanmak için sertifika oluşturuyorsanız, RSA anahtarlarının geleneksel PKCS # 1 PEM formatına dönüştürüldüğünden ve sertifikaların SHA1 özeti kullandığından emin olun.
İşte kendi CA'nızı, bir sunucu sertifikasını ve bir müşteri sertifikasını nasıl oluşturacağınıza bir örnek.
# 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