Cài đặt SSL cho server. Phần II: Nginx server

Cài đặt SSL cho server. Phần II: Nginx server

Phải chắc chắn là đã backup nginx.conf trước khi sửa. Tham khảo phần I với Apache ở đây http://blog.codelovers.vn/cai-dat-ssl-cho-server/ 

Cài đặt Self-signed SSL

Self-signed SSL là SSL tự sinh, khi dùng sẽ có dấu hiện cảnh báo của trình duyệt. SSL dạng này chỉ nên dùng để test sản phẩm.

  1. Tạo key file
    • Chạy lệnh: openssl req -x509 -nodes -days 365 -newkey rsa:2048 -sha256 -keyout ssl.key -out ssl.crt
    • Khi chạy lệnh sẽ có các trường cần điền sau:
    • Ví dụ
    Country Name (2 letter code) [XX]:VN
    State or Province Name (full name) []:Hanoi
    Locality Name (eg, city) [Default City]:Hanoi
    Organization Name (eg, company) [Default Company Ltd]:Codelovers Vietnam
    Organizational Unit Name (eg, section) []:MDPTeam
    Common Name (eg, your name or your server's hostname) []:codelovers.vn Email Address []:tuyen.nguyen@codelovers.vn
  2. Thêm mục setting cho SSL vào nginx.conf
    server {
        listen  443;
        server_name codelovers.vn;
    
        ssl on;
        ssl_certificate /etc/ssl/certs/ssl.crt;
        ssl_certificate_key /etc/ssl/certs/ssl.key;
    
  3. Reload lại nginx
    sudo service nginx reload 
    

Cài đặt Offical SSL

Ví dụ với Rapid SSL mua 4.99$ 1 năm

  1. Tạo key file
    • Chạy lệnh:
    • openssl req -nodes -newkey rsa:2048 -sha256 -keyout codelovers.key -out codelovers.csr
    • Khi chạy lệnh sẽ có các trường cần điền sau:
    • Ví dụ
    Country Name (2 letter code) [XX]:VN
    State or Province Name (full name) []:Hanoi
    Locality Name (eg, city) [Default City]:Hanoi
    Organization Name (eg, company) [Default Company Ltd]:Codelovers Vietnam
    Organizational Unit Name (eg, section) []:MDPTeam
    Common Name (eg, your name or your server's hostname) []:codelovers.vnEmail Address []:tuyen.nguyen@codelovers.vn
  2. Kết quả của câu lệnh trên sẽ sinh ra 2 file codelovers.keycodelovers.csr.Copy nội dung file .csr và đưa lên cho trang bán SSL. Phần server cứ để auto detect, ví dụ như không thể chọn server chạy nginx. Hoặc để apache + openssl cũng ko vấn đề.
  3. Tạo 1 email để xác thực chủ domainThường sẽ là email dạng admin@domain.com. Nếu mail này đã có thể dùng được thì không sao, còn không thì có nhiều cách để đăng ký email này, ở đây xin giới thiệu 2 cách
    1. Dùng 1 service cho phép đăng ký email
      • Có thể dùng của Google (mất phí) hoặc của Zoho (miễn phí). Ý tưởng chung là trỏ record mx của domain mình muốn đăng ký vào 1 mail server để nó có thể nhận mail cho mình.
      • Vào http://zoho.com đăng ký 1 tài khoản. Mỗi email chỉ đăng ký được 1 acc zoho nhưng có thể dùng mẹo, ví dụ: abc@gmail.comabc+123@gmail.com đều là 1 email nhưng vẫn đăng ký được 2 acc zoho
      • Vào Godaddy, mục quản lý domain: thêm bản ghi CNAME vào để chứng thực với Zoho rằng mình sở hữu domain ấy
      • Vào Godaddy, mục quản lý domain: sửa 2 bản ghi MX có sẵn về mx.zohomail.com và mx2.zohomail.com để nhận mail
      • Gửi thử email tới địa chỉ email admin, ví dụ admin@codelovers.vn
    2. Dùng mail server của mình tự tạo
      • Cài Round Cube để nhận mail cho mình.
  4. Sau khi server SSL confirm và sẽ gửi về cho mình 2 mail (1-> mail cảm ơn, 2->mail có chứa nội dung của Web Server Certificate và Intermediate CA )
    1. Tạo 1 file mới có tên là codelovers.webintermediate, nội dung là gộp của Web Server Certificate và Intermediate CA
    2. Ví dụ:
    3. —–BEGIN CERTIFICATE—–
      MIIFIjCCBAqgAwIBAgIDFYupMA0GCSqGSIb3DQEBBQUAMDwxCzAJBgNVBAYTAlVT MRcwFQYDVQQKEw5HZW9UcnVzdCwgSW5jLjEUMBIGA1UEAxMLUmFwaWRTU0wgQ0Ew HhcNMTQxMDAxMjIyMTQyWhcNMTUwNzIyMTcwNTAxWjCBvTEpMCcGA1UEBRMgLXZu MlplY2lZb1Y1VVRlSEZoYUF0RFlKNmxIR0NhemUxEzARBgNVBAsTCkdUOTQ3Nzk5 OTkxMTAvBgNVBAsTKFNlZSB3d3cucmFwaWRzc2wuY29tL3Jlc291cmNlcy9jcHMg KGMpMTQxLzAtBgNVBAsTJkRvbWFpbiBDb250cm9sIFZhbGlkYXRlZCAtIFJhcGlk U1NMKFIpMRcwFQYDVQQDEw5vbW9yb2luZXdzLmNvbTCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBALSczRKeS1Ncj0euWjBbFburDyX+KHT7mPlHJsi8xbmg W1pBiiOhe0/OX9E9El3cVx/ZIhYivDl3vrxYRFCLu88RV35/AxqaOPkAaMr6Gxt+ NnRqw8QxTfMhteJnDUGEu9JN1BjFrz65u2qFdiEoIdycju3f9p4ETYauNWps+Fww 3qiC7mgo3P1QqiJSUb7Xc5/0PDdpVE4JsYaT14J2Nlr6oQbUvxH3RUh7ia3bVHQs JrD66ImQYnjfZUYiIKWKNNc0WuEXixrb3rrnKjeiYiWY7cH//WjvOpB36Aur4R4p SM9ByWyTd0oC0LNm7qbHYkHYQdx7Mdo7/k2cCHyXpBMCAwEAAaOCAakwggGlMB8G A1UdIwQYMBaAFGtpPWoYQkrdjwJlOf01JIZ4kRYwMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGQYDVR0RBBIwEIIOb21vcm9p bmV3cy5jb20wQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL3JhcGlkc3NsLWNybC5n ZW90cnVzdC5jb20vY3Jscy9yYXBpZHNzbC5jcmwwHQYDVR0OBBYEFAKxkE+GoV2H FQWdj/LPaXNkI3vRMAwGA1UdEwEB/wQCMAAweAYIKwYBBQUHAQEEbDBqMC0GCCsG AQUFBzABhiFodHRwOi8vcmFwaWRzc2wtb2NzcC5nZW90cnVzdC5jb20wOQYIKwYB BQUHMAKGLWh0dHA6Ly9yYXBpZHNzbC1haWEuZ2VvdHJ1c3QuY29tL3JhcGlkc3Ns LmNydDBMBgNVHSAERTBDMEEGCmCGSAGG+EUBBzYwMzAxBggrBgEFBQcCARYlaHR0 cDovL3d3dy5nZW90cnVzdC5jb20vcmVzb3VyY2VzL2NwczANBgkqhkiG9w0BAQUF AAOCAQEARRxstf5IpgtoiAN5dL/whJPAIp5MojjLViuDrrnwv/ffROwlWNP+/yq0 xTdh7Nuw1FZCb67hDBIB98DC6hERhhwE9LKq/8yW2YVRTvAsXtYbboI/gwexzR8s C1uR4O75kT4oOP1HDDN45GOwSPY61CUjYuIgsZ2gWoa0RMnJQK1+OqmFTTInwjmM gPO+eSpvfCfUN0EvPhC8ZOQWZzvXymR1sht/k3CeYlK5sTr1IBzp9GH5VDkP/uta wwpCQ0QNN7EntlkyxDK7am0BjMw2DlTru4AlRcaZA4+JcsBHVYqM8hMr43DmrdVI XSxisMT1zp2T+UaxFXOHWcvPvce1rw==
      —–END CERTIFICATE—–
      —–BEGIN CERTIFICATE—–
      MIID1TCCAr2gAwIBAgIDAjbRMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i YWwgQ0EwHhcNMTAwMjE5MjI0NTA1WhcNMjAwMjE4MjI0NTA1WjA8MQswCQYDVQQG EwJVUzEXMBUGA1UEChMOR2VvVHJ1c3QsIEluYy4xFDASBgNVBAMTC1JhcGlkU1NM IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3H4Vsce2cy1rfa0 l6P7oeYLUF9QqjraD/w9KSRDxhApwfxVQHLuverfn7ZB9EhLyG7+T1cSi1v6kt1e 6K3z8Buxe037z/3R5fjj3Of1c3/fAUnPjFbBvTfjW761T4uL8NpPx+PdVUdp3/Jb ewdPPeWsIcHIHXro5/YPoar1b96oZU8QiZwD84l6pV4BcjPtqelaHnnzh8jfyMX8 N8iamte4dsywPuf95lTq319SQXhZV63xEtZ/vNWfcNMFbPqjfWdY3SZiHTGSDHl5 HI7PynvBZq+odEj7joLCniyZXHstXZu8W1eefDp6E63yoxhbK1kPzVw662gzxigd gtFQiwIDAQABo4HZMIHWMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUa2k9ahhC St2PAmU5/TUkhniRFjAwHwYDVR0jBBgwFoAUwHqYaI2J+6sFZAwRfap9ZbjKzE4w EgYDVR0TAQH/BAgwBgEB/wIBADA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3Js Lmdlb3RydXN0LmNvbS9jcmxzL2d0Z2xvYmFsLmNybDA0BggrBgEFBQcBAQQoMCYw JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmdlb3RydXN0LmNvbTANBgkqhkiG9w0B AQUFAAOCAQEAq7y8Cl0YlOPBscOoTFXWvrSY8e48HM3P8yQkXJYDJ1j8Nq6iL4/x /torAsMzvcjdSCIrYA+lAxD9d/jQ7ZZnT/3qRyBwVNypDFV+4ZYlitm12ldKvo2O SUNjpWxOJ4cl61tt/qJ/OCjgNqutOaWlYsS3XFgsql0BYKZiZ6PAx2Ij9OdsRu61 04BqIhPSLT90T+qvjF+0OJzbrs6vhB6m9jRRWXnT43XcvNfzc9+S7NIgWW+c+5X4 knYYCnwPLKbK3opie9jzzl9ovY8+wXS7FXI6FoOpC+ZNmZzYV+yoAVHHb1c0XqtK LEL2TxyJeN4mTvVvk0wVaydWTQBUbHq3tw==—–
      END CERTIFICATE—–
  5. Config file nginx.conf (Trước khi sửa cần chắc chắn đã backup file naỳ). Thêm mới một đoạn có nội dung sau.
    server {
        listen  443;
        server_name codelovers.vn;
    
        ssl on;
        ssl_certificate /etc/ssl/certs/codelovers.webintermediate;
        ssl_certificate_key /etc/ssl/certs/codelovers.key;

    Chú ý điền đúng đường dần tới các file .key, .webintermediate

  6. Reload lại nginx
    sudo service nginx reload 
    

Reissue SSL

Khi thay đổi thiết lập SSL trên 1 domain có sẵn, thay vì mua mới chứng chỉ SSL, ta chỉ việc tái cấp phát SSL.

  1. Yêu cầu tái cấp phát

    Tái cấp phát SSL

    Tái cấp phát SSL

  2. Sau đó làm lại các bước: tạo key file, upload key file… Lưu ý là trong thời gian từ lúc yêu cầu tái cấp phát, SSL cũ vẫn có hiệu lực.
  3. Khi tái cấp phát SSL, email nhận key file có thể được thiết lập lại, nhưng khả năng cao là email cũ vẫn được cached và email mới không nhận được thông tin

Thay đổi server

Trong trường hợp domain giữ nguyên và bạn cần thay đổi server, đơn giản chỉ cần copy các file .key và .webintermediate trên sang server mới mà không cần xin cấp phát lại SSL

Trouble shooting