เครื่องมือสร้างใบรับรอง SSL
ข้อมูลระบุตัวตน
ใบรับรอง
กุญแจส่วนตัว (เก็บเป็นความลับ!)
ใบรับรองแบบ self-signed จะไม่ได้รับความเชื่อถือจากเบราว์เซอร์โดยค่าเริ่มต้น: ใช้เฉพาะสำหรับการพัฒนาในเครื่อง การทดสอบ หรือเครือข่ายส่วนตัว
สร้างใบรับรองที่ลงนามด้วยตนเองสำหรับการพัฒนาในเครื่องหรือการทดสอบภายใน ได้โดยตรงในเบราว์เซอร์ของคุณ คุณเลือกขนาดคีย์ RSA (2048, 3072 หรือ 4096 บิต), Common Name, Subject Alternative Names, ช่วงเวลาที่มีผล และรายละเอียดพื้นฐานขององค์กร ใบรับรองและคีย์ส่วนตัวจะถูกสร้างในเบราว์เซอร์ของคุณและไม่ถูกส่งไปยังเซิร์ฟเวอร์ของเราเลย และคุณดาวน์โหลดทั้งสองเป็นไฟล์ PEM ที่พร้อมใช้กับ Nginx หรือ Apache
การสร้างใบรับรองทำงานอย่างไร
-
1
เลือกขนาดคีย์ RSA
2048 บิตเพียงพอสำหรับการทดสอบส่วนใหญ่ ส่วน 3072 หรือ 4096 ให้คีย์ที่ใหญ่ขึ้นโดยแลกกับความเร็ว
-
2
ป้อน subject และ SAN
Common Name พร้อมกับทุกชื่อโฮสต์หรือ IP ที่ใบรับรองควรครอบคลุม (เบราว์เซอร์สมัยใหม่จะไม่สนใจ CN แต่ใช้ SAN แทน)
-
3
สร้างในเบราว์เซอร์
ใบรับรองที่ลงนามด้วยตนเองจะถูกสร้างและลงนามด้วยคีย์ส่วนตัวที่จับคู่กัน ทั้งหมดทำในเครื่องภายในเบราว์เซอร์ของคุณ
-
4
ดาวน์โหลดผลลัพธ์
ใบรับรองที่เข้ารหัสแบบ PEM (`cert.pem`) และคีย์ส่วนตัวแบบ PEM (`key.pem`) พร้อมติดตั้ง
ทุกอย่างเกิดขึ้นในเบราว์เซอร์ของคุณ
เครื่องมือนี้ทำงานทั้งหมดในเบราว์เซอร์ของคุณ คู่คีย์ RSA ถูกสร้างในเครื่องด้วยไลบรารีเข้ารหัส JavaScript ใบรับรองถูกลงนามบนอุปกรณ์ของคุณ และทั้งคีย์ส่วนตัวและใบรับรองไม่เคยถูกอัปโหลดไปยังเซิร์ฟเวอร์ของเรา ถึงกระนั้นก็ตาม จงถือว่าคีย์ส่วนตัวเป็นความลับ ใครก็ตามที่ถือมันไว้ก็สามารถปลอมเป็นใบรับรองนั้นได้
ลงนามด้วยตนเองหมายความว่าอย่างไร
คุณเป็นทั้งผู้ออกและ subject ในเวลาเดียวกัน ใบรับรองถูกลงนามด้วยคีย์ส่วนตัวของมันเอง จึงไม่มีผู้ออกใบรับรอง (CA) สาธารณะรายใดรับรองให้ นั่นคือเหตุผลที่เบราว์เซอร์แสดงคำเตือน มันเหมาะกับการทดสอบ การพัฒนาในเครื่อง (localhost, dev.local) และเซิร์ฟเวอร์ภายในที่คุณสามารถแจกจ่ายใบรับรองให้ไคลเอนต์ที่ต้องไว้วางใจมัน
หากคุณต้องการใบรับรองที่อินเทอร์เน็ตสาธารณะไว้วางใจ เครื่องมือนี้ไม่ใช่ขั้นตอนที่ถูกต้อง คุณต้องมีใบรับรองที่ลงนามโดย CA (เช่นจาก Let’s Encrypt หรือ CA แบบเสียเงิน) ซึ่งต้องใช้คำขอลงนามใบรับรอง (CSR) และการยืนยันโดเมนที่เครื่องมือในเบราว์เซอร์นี้ไม่ได้ทำ
สิ่งที่อยู่ในใบรับรอง
| ฟิลด์ | หมายเหตุ |
|---|---|
| Subject (CN, O, C) | Common Name, องค์กร, ประเทศ |
| Subject Alternative Names | ทุกโดเมนหรือ IP ที่ครอบคลุม (สำคัญมาก!) |
| คีย์สาธารณะ | RSA ได้มาจากคีย์ส่วนตัวที่สร้างขึ้น |
| ผู้ออก | เหมือนกับ subject เพราะลงนามด้วยตนเอง |
| ช่วงที่มีผล | Not Before / Not After (จำนวนวันที่มีผลของคุณ) |
| Key Usage | digitalSignature, keyEncipherment |
| Extended Key Usage | serverAuth, clientAuth |
| Basic Constraints | CA:FALSE (ใบรับรองปลายทาง ไม่ใช่ CA) |
ไฟล์ผลลัพธ์
key.pemคีย์ส่วนตัว (ปกป้องไว้ โหมด 0600)cert.pemใบรับรองที่ลงนามด้วยตนเอง (สาธารณะ แจกจ่ายได้)
สำหรับ Nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}
สำหรับ Apache 2.4+
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
SSLCertificateKeyFile /etc/ssl/private/key.pem
</VirtualHost>
การทำให้เครื่องของคุณเองไว้วางใจใบรับรอง
หากต้องการปิดคำเตือนของเบราว์เซอร์บนเครื่องที่คุณควบคุม ให้นำเข้า cert.pem ไปยังที่เก็บความน่าเชื่อถือของระบบหรือเบราว์เซอร์นั้น ทำเช่นนี้เฉพาะกับใบรับรองที่คุณสร้างเองและบนอุปกรณ์ที่เป็นของคุณเท่านั้น เครื่องมืออย่าง mkcert ช่วยทำ CA ในเครื่องแบบอัตโนมัติสำหรับหลายบริการ ส่วนเครื่องมือนี้สร้างใบรับรองที่ลงนามด้วยตนเองครั้งละหนึ่งใบ
สิ่งที่ใบรับรองลงนามด้วยตนเองไม่เหมาะจะใช้
- เว็บไซต์สาธารณะ ผู้ใช้จะเห็นคำเตือน และหลายคนจะออกไป
- การเชื่อมต่อ API ของบุคคลที่สาม ไคลเอนต์ส่วนใหญ่จะปฏิเสธผู้ออกที่ไม่รู้จัก
- การใช้งานจริง (production) ไม่ได้เด็ดขาด ใช้ Let’s Encrypt (ฟรี) หรือ CA แบบเสียเงินสำหรับทุกสิ่งบนอินเทอร์เน็ตแบบเปิด
คำถามที่พบบ่อย
ไม่ คู่คีย์และใบรับรองถูกสร้างในเบราว์เซอร์ของคุณและอยู่บนอุปกรณ์ของคุณ ไม่มีอะไรถูกอัปโหลด ถึงอย่างนั้นก็ควรเก็บไฟล์ key.pem ที่ดาวน์โหลดไว้เป็นความลับ เพราะใครก็ตามที่ถือมันไว้ก็สามารถปลอมเป็นใบรับรองนั้นได้
ไม่ได้ หากจะมีบุคคลที่สามเชื่อมต่อเข้ามา เบราว์เซอร์จะแสดงคำเตือนที่ชัดเจน ใช้ใบรับรองที่ลงนามโดย CA แบบฟรี (Let’s Encrypt, ZeroSSL) หรือแบบเสียเงิน ส่วนแบบลงนามด้วยตนเองเหมาะกับการสื่อสารเครื่องต่อเครื่องภายในเครือข่ายภายในที่คุณควบคุมทั้งสองปลายทาง
ในอดีต CN เก็บโดเมนหลัก เบราว์เซอร์สมัยใหม่จะไม่สนใจ CN ในการยืนยันโฮสต์และใช้เฉพาะ SAN ให้ใส่ทุกชื่อโฮสต์ใน SAN เสมอ และตั้ง CN เป็นโดเมนหลักเพียงเพื่อการระบุที่อ่านง่ายเท่านั้น
ได้ ใส่ *.example.com ใน SAN มันครอบคลุมโดเมนย่อยหนึ่งระดับ สำหรับหลายระดับ ให้เพิ่มไวลด์การ์ดหลายรายการ (*.example.com และ *.dev.example.com)
เครื่องมือที่เกี่ยวข้อง
เครื่องมือเข้ารหัสซีซาร์
เข้ารหัสและถอดรหัสข้อความด้วยรหัสซีซาร์ เลื่อนได้ตั้งแต่ 1-25 รองรับ ROT13 เป็นกรณีพิเศษ และคงเครื่องหมายวรรคตอนกับตัวพิมพ์ใหญ่-เล็กไว้เหมือนเดิม
ตัวเข้ารหัสและถอดรหัส Base85
เข้ารหัสและถอดรหัส Base85 ในรูปแบบ Adobe Ascii85 ซึ่งใช้ในไฟล์ PostScript และ PDF กะทัดรัดกว่า Base64 สำหรับข้อมูลไบนารี
ตัวสร้าง bcrypt
สร้าง bcrypt hash จากรหัสผ่าน plaintext ปรับ cost factor ได้ตั้งแต่ 4 ถึง 13 ใช้ร่วมกับ Laravel, Django, Node และ PHP ได้
ตัวสร้าง bcrypt Hash
สร้าง bcrypt hash หรือตรวจสอบรหัสผ่าน plaintext กับ bcrypt hash ที่มีอยู่ โหมด generate และ verify อยู่ข้างกันในเครื่องมือเดียว
เข้ารหัส / ถอดรหัส AES
เข้ารหัสและถอดรหัสข้อความความเสี่ยงต่ำด้วย AES cipher ของ OpenSSL passphrase จะถูก hash ด้วย SHA-256 และผลลัพธ์ Base64 มี IV รวมกับข้อความเข้ารหัส
ตัวเข้ารหัส Atbash Cipher
เข้ารหัสหรือถอดรหัสข้อความด้วยรหัส Atbash ซึ่งเป็นการแทนที่แบบฮีบรูที่จับคู่ A-Z เป็น Z-A การทำงานเดียวกันใช้ได้ทั้งเข้ารหัสและถอดรหัส