Tổng lượt truy cập

Monday, August 6, 2012

Make private key, CSR.

Hi all,
Trước mình đã có bài tổng quan về mã hóa file bất kỳ sử dụng open SSL. http://mysunitsecurity.blogspot.com/2011/06/ma-hoa-all-file-user-openssl.html

Trả là hệ thống bên tôi đang sử dụng CA nội bộ openCA , nay phải xin cấp cert để sử dụng cho dịch vụ public (cái này cần phải cert verify bởi Root CA chỗ Cục Ứng Dụng CNTT) như vậy cơ quan mình phải sử dụng của một số ông public CA, Bkav, VDC, Viettel...Mình xin note lại mấy ý để bạn hiểu hơn về các bước để issue một cert.
khi bạn muốn xin cấp Cert từ nhà cung cấp dịch vụ thì công việc của bạn phải làm những gì?

- Bạn tạo ra private key cho mình.(giữ bên mình, chỉ có mình mình biết)
- Gửi CSR cho nhà cung cấp CA.
- Nhà cung cấp CA sẽ nhận CSR và sử dụng private key của CA để ký lên theo yêu cầu CSR và tạo cert theo chuẩn X509, gửi lại khách hàng.

 
Có rất nhiều phần mềm hỗ trợ tạo CSR và key. Hoặc những công việc này nhà cung cấp cũng hoàn tào làm cho bạn, học tạo private key cho bạn và họ lưu vào thiết bị token gửi cho bạn. Nhưng những người làm về security cần phải hiểu cơ chế việc tạo và sử dụng cert thế nào, mình xin giới thiệu qua các tạo key và CSR bằng open ssl.
  • Tạo private key openssl.
    • Tạo private key băm bởi rsa trong định dạng PEM :
      openssl genrsa -out privkey.pem 2048 (1024 giờ ko được khuyến cáo dùng vì độ an toàn của nó)
      Bạn có thể tạo key mã hóa -des3.
  • Tạo CSR.
    • Tạo CSR dùng rsa:
      openssl req -new -key privkey.pem -out certreq.csr
      ( Bạn gửi CSR này cho root CA. )
    • Root CA CSR của bạn với private key của họ:
      openssl x509 -req -days 3650 -in certreq.csr -signkey privkey.pem -out newcert.pem
    • Một số định dạng:
      • .csr This is a Certificate Signing Request. Some applications can generate these for submission to certificate-authorities. It includes some/all of the key details of the requested certificate such as subject, organization, state, whatnot. These get signed by the CA and a certificate is returned. The returned certificate is the public certificate, which itself can be in a couple of formats.
      • .pem This is the public-key of a specific certificate. In apache installs, this frequently resides in /etc/ssl/servercerts. This is also the format used for Certificate Authority certificates (/etc/ssl/certs)
      • .key This is the private-key of a specific certificate. In apache installs, this frequently resides in /etc/ssl/private. The rights on this directory and the certificates is very important, and some programs will refuse to load these certificates if they are set wrong.
      • .pkcs12 .pfx .p12 A passworded container format that contains both public and private certificate pairs. Every time I get one I have to google to remember the openssl-fu required to break it into .key and .pem files.
      • .der Fills the same function as a .pem file, but a different format. OpenSSL can convert these to .pem. I've only ever run into them in the wild with Novell's eDirectory certificate authority.
      • .cert .cer A .pem file with a different extension. This extension is recognized by Windows Explorer as a certificate, which .pem is not.
      • .crl A certificate revocation list. Certificate Authorities produce these as a way to de-authorize certificates before expiration.