เครื่องมือสร้างใบรับรอง SSL

ข้อมูลระบุตัวตน

ใบรับรองแบบ self-signed จะไม่ได้รับความเชื่อถือจากเบราว์เซอร์โดยค่าเริ่มต้น: ใช้เฉพาะสำหรับการพัฒนาในเครื่อง การทดสอบ หรือเครือข่ายส่วนตัว

สร้างใบรับรองที่ลงนามด้วยตนเองสำหรับการพัฒนาในเครื่องหรือการทดสอบภายใน ได้โดยตรงในเบราว์เซอร์ของคุณ คุณเลือกขนาดคีย์ RSA (2048, 3072 หรือ 4096 บิต), Common Name, Subject Alternative Names, ช่วงเวลาที่มีผล และรายละเอียดพื้นฐานขององค์กร ใบรับรองและคีย์ส่วนตัวจะถูกสร้างในเบราว์เซอร์ของคุณและไม่ถูกส่งไปยังเซิร์ฟเวอร์ของเราเลย และคุณดาวน์โหลดทั้งสองเป็นไฟล์ PEM ที่พร้อมใช้กับ Nginx หรือ Apache

การสร้างใบรับรองทำงานอย่างไร

  1. 1

    เลือกขนาดคีย์ RSA

    2048 บิตเพียงพอสำหรับการทดสอบส่วนใหญ่ ส่วน 3072 หรือ 4096 ให้คีย์ที่ใหญ่ขึ้นโดยแลกกับความเร็ว

  2. 2

    ป้อน subject และ SAN

    Common Name พร้อมกับทุกชื่อโฮสต์หรือ IP ที่ใบรับรองควรครอบคลุม (เบราว์เซอร์สมัยใหม่จะไม่สนใจ CN แต่ใช้ SAN แทน)

  3. 3

    สร้างในเบราว์เซอร์

    ใบรับรองที่ลงนามด้วยตนเองจะถูกสร้างและลงนามด้วยคีย์ส่วนตัวที่จับคู่กัน ทั้งหมดทำในเครื่องภายในเบราว์เซอร์ของคุณ

  4. 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 การทำงานเดียวกันใช้ได้ทั้งเข้ารหัสและถอดรหัส