Ubuntu 12.04 hadir dengan OpenSSL 1.0.1, yang memiliki standar yang agak berbeda dari versi OpenSSL 0.9.8 yang lebih lama.
Antara lain, jika Anda menggunakan openssl req -newkey rsa:2048
untuk menghasilkan kunci RSA, Anda akan berakhir dengan kunci dalam format yang disebut PKCS # 8 . Diwakili dalam format PEM, tombol-tombol ini memiliki -----BEGIN PRIVATE KEY-----
header yang lebih umum , yang tidak memberi tahu Anda apa kunci (RSA, DSA, EC) itu.
Sebelumnya, dengan OpenSSL 0.9.8, kunci selalu dalam format yang disebut PKCS # 1 , yang diwakili sebagai PEM, memiliki header -----BEGIN RSA PRIVATE KEY-----
.
Karena itu, Anda tidak dapat dengan mudah mengubah header dan footer dari:
-----BEGIN PRIVATE KEY-----
untuk
-----BEGIN RSA PRIVATE KEY-----`
Itu bukan hal yang sama dan itu tidak akan berhasil. Alih-alih, Anda perlu mengonversi kunci ke format lama menggunakan openssl rsa
. Seperti ini:
openssl rsa -in key_in_pkcs1_or_pkcs8.pem -out key_in_pkcs1.pem
MySQL (v5.5.35) di Ubuntu 12.04 menggunakan implementasi SSL yang disebut yaSSL (v2.2.2). Ia mengharapkan kunci berada dalam format PKCS # 1 dan tidak mendukung format PKCS # 8 yang digunakan oleh OpenSSL 1.0 dan yang lebih baru. Jika Anda hanya mengubah header dan footer, seperti yang disarankan oleh posting lain di utas ini, MySQL / yaSSL tidak akan mengeluh, tetapi Anda tidak akan dapat terhubung dan malah berakhir dengan kesalahan seperti ini:
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
Ubuntu 14.04 hadir dengan OpenSSL 1.0.1f dan pengaturan baru. Antara lain, itu akan menghasilkan sertifikat dengan SHA256 mencerna bukannya SHA1, yang digunakan dalam versi sebelumnya. Secara kebetulan, versi yaSSL yang dibundel dengan MySQL juga tidak mendukung ini.
Jika Anda membuat sertifikat untuk digunakan dengan MySQL, ingatlah untuk memastikan kunci RSA dikonversikan ke format PEM # PKCS # 1 tradisional dan bahwa sertifikat menggunakan pencerna SHA1.
Berikut adalah contoh cara menghasilkan CA Anda sendiri, sertifikat server dan sertifikat klien.
# 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