จะสร้างใบรับรอง SSL ได้อย่างง่ายดายและกำหนดค่าใน Apache2 ใน Mac OS X ได้อย่างไร?


32

ฉันต้องการใช้ Mac OS X ของฉันกับ https สำหรับการทดสอบการพัฒนาท้องถิ่น ฉันจะทำให้ Apache2 ตอบสนองต่อ ssl ได้อย่างง่ายดายเพียงเพื่อเสนอการทดสอบ - ฉันไม่ต้องการใบรับรองจริง ๆ แต่เป็นของปลอมเพื่อให้ https ท้องถิ่นทำงาน

คำตอบ:


57

สำหรับการทดสอบการพัฒนาท้องถิ่นใบรับรองแบบลงนามด้วยตนเองนั้นเพียงพอ คุณสามารถสร้างได้ด้วย ชุด OpenSSL ชอบมาก:

การสร้างคีย์ส่วนตัว:

openssl genrsa -des3 -out server.key 1024

เอาท์พุท:

 การสร้างคีย์ส่วนตัว RSA โมดูลัสยาว 1024 บิต
.................................................. ....... ++++++
........ ++++++
e คือ 65537 (0x10001)
ป้อนวลีรหัสผ่าน PEM:
การยืนยันรหัสผ่าน - ป้อนวลีรหัสผ่าน PEM: 

ป้อนรหัสผ่านสำหรับคีย์ส่วนตัวของคุณ

การสร้าง CSR (คำขอลงนามใบรับรอง):

openssl req -new -key server.key -out server.csr

มันจะขอรายละเอียดเช่นนี้:

 ชื่อประเทศ (รหัสตัวอักษร 2 ตัว) [GB]:
ชื่อรัฐหรือจังหวัด (ชื่อเต็ม) [Berkshire]:
ชื่อท้องถิ่น (เช่นเมือง) [Newbury]:
ชื่อองค์กร (เช่น บริษัท ) [My Company Ltd]:
ชื่อหน่วยองค์กร (เช่นส่วน) []:
ชื่อสามัญ (เช่นชื่อของคุณหรือชื่อโฮสต์ของเซิร์ฟเวอร์ของคุณ) []:
ที่อยู่อีเมล []:
โปรดป้อนแอตทริบิวต์ 'พิเศษ' ต่อไปนี้
ที่จะส่งพร้อมกับคำขอใบรับรองของคุณ
รหัสผ่านที่ท้าทาย []:
ชื่อ บริษัท ทางเลือก []: 

ค่อนข้างตรงไปตรงมาชื่อสามัญคือชื่อโฮสต์ของเซิร์ฟเวอร์ของคุณตามที่ระบุในวงเล็บ

การสร้างใบรับรองที่ลงนามเอง:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

การกำหนดค่า SSL ใน httpd.conf สำหรับ Apache:

 เปิด SSLE
SSLCertificateFile /path/to/generated/server.crt
SSLCertificateKeyFile /path/to/generated/server.key 

(แทนที่เส้นทางอย่างเหมาะสมด้วยเส้นทางไปยังใบรับรองและรหัสของคุณ)

รีสตาร์ท Apache :

apachectl restart

Apache จะขอให้คุณใส่ข้อความรหัสผ่านของคุณ หากคุณคิดว่าคุณจะปิดเซิร์ฟเวอร์บ่อยครั้งคุณอาจต้องการลบข้อความรหัสผ่านจากคีย์เพื่อหลีกเลี่ยงการป้อนรหัสผ่านในแต่ละครั้ง ถ้าไม่ไม่ต้องกังวล ถ้าเป็นเช่นนั้นทำตามขั้นตอนนี้หลังจากขั้นตอนที่ 2 ( การสร้าง CSR ):

cp server.key server.key.copy
openssl rsa -in server.key.copy -out server.key

มันเกือบจะได้ผลสำหรับฉัน เมื่อฉันพยายามที่จะเข้าถึงบางหน้าใน Rails ของฉันมีการใช้ http หน้าอยู่ แต่เมื่อฉันใช้ https ก็ไม่พบหน้า คุณรู้ไหมว่าอาจเป็นอะไร
Daniel Cukier

คุณเปลี่ยน virtualhost เป็น https เพื่อใช้กับพอร์ต 443 หรือไม่? ควรมีลักษณะดังนี้: & lt; VirtualHost 192.168.1.100:443> SSLEngine เปิด ฯลฯ .... & lt; / VirtualHost & gt;
John T

ขอบคุณสำหรับสิ่งนี้ฉันได้รับใบรับรอง SSL ที่ทำงานได้ดีกับ Lion ด้วยสิ่งนี้ แค่คิดว่าฉันจะเพิ่มจุดสองสามแม้ว่าที่จะทำให้ชีวิตของคุณง่ายขึ้น Apache ของ Apple มี httpd-ssl.conf ซึ่งได้รับการตั้งค่าให้ค้นหาใน / private / etc / apache2 ดังนั้นหากคุณวางเซิร์ฟเวอร์ของคุณ * ไฟล์มีไฟล์น้อยหนึ่งที่จะแก้ไข นอกจากนี้คุณต้องแก้ไข httpd.conf เนื่องจากบรรทัดที่มี httpd-ssl.conf จะใส่เครื่องหมายความคิดเห็นไว้ตามค่าเริ่มต้น ในที่สุด 365 วันก็ค่อนข้างสั้นคุณอาจต้องการกำหนดวันหมดอายุที่ยาวนานขึ้นหรือคุณจะทำอีกครั้งในปีหน้า (ฉันใช้ 3650)
GordonM

หากใครมีปัญหาอย่างที่ฉันมีคุณจะดีใจที่พบลิงค์นี้ซึ่งจะอธิบายวิธีการตั้งค่า virtualhost กับ virtualhostx อย่างถูกต้องเพื่อทำงานกับ ssl yellowrobot.heroku.com/blog/2012/01/22/...
Relequestual

หากเป็นเครื่อง dev ของคุณคุณอาจต้องการมีรหัสส่วนตัวโดยไม่มีรหัสผ่าน: openssl rsa -in server.key -out server.nopass.key
Aldekein
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.