Ubuntu 12.04 มาพร้อมกับ OpenSSL 1.0.1 ซึ่งมีค่าเริ่มต้นแตกต่างจากรุ่น OpenSSL 0.9.8 ที่ค่อนข้างเก่า
เหนือสิ่งอื่นใดหากคุณใช้openssl req -newkey rsa:2048
ในการสร้างคีย์ RSA คุณจะจบลงด้วยการที่สำคัญในรูปแบบที่เรียกว่าPKCS # 8 แสดงในรูปแบบ PEM คีย์เหล่านี้มี-----BEGIN PRIVATE KEY-----
ส่วนหัวทั่วไปมากกว่าซึ่งไม่ได้บอกคุณว่าเป็นคีย์ชนิดใด (RSA, DSA, EC)
ก่อนหน้านี้มี OpenSSL 0.9.8, กุญแจได้เสมอในรูปแบบที่เรียกว่าPKCS # 1-----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
MySQL (v5.5.35) บน Ubuntu 12.04 กำลังใช้งาน SSL ที่ชื่อ yaSSL (v2.2.2) คาดว่ากุญแจจะอยู่ในรูปแบบ PKCS # 1 และไม่สนับสนุนรูปแบบ PKCS # 8 ที่ใช้โดย OpenSSL 1.0 และใหม่กว่า หากคุณเพียงแค่เปลี่ยนส่วนหัวและส่วนท้ายตามที่แนะนำโดยโพสต์อื่นในกระทู้นี้ MySQL / yaSSL จะไม่บ่น แต่คุณจะไม่สามารถเชื่อมต่อและจบลงด้วยข้อผิดพลาดดังนี้:
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
Ubuntu 14.04มาพร้อมกับ OpenSSL 1.0.1f และการตั้งค่าใหม่ เหนือสิ่งอื่นใดมันจะสร้างใบรับรองด้วยการแยกย่อย SHA256 แทน SHA1 ซึ่งใช้ในเวอร์ชันก่อนหน้า อนึ่งรุ่น yaSSL ที่มาพร้อมกับ MySQL ไม่รองรับสิ่งนี้
หากคุณกำลังสร้างใบรับรองเพื่อใช้กับ 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