1. Chuẩn bị
- Đã mua chứng chỉ SSL Comodo (Mình sử dụng SSL Comodo 160k mua tại nhà cung cấp Vietnix).
- Đã mua máy ảo VPS và cài đặt Unbuntu 18, 20 hoặc 22 (Mình mua vps của thuevpsgiare giá 599k 1 năm).
- Đã mua tên miền (Domain) và đã trỏ về IP của máy chủ. (Mình mua tên miền thuanhm.com tại vietnix)
2. Xử lý file .CRT từ nhà cung cấp
Sau khi mình mua chứng chỉ SSL thì nhà cung cấp sẽ gửi bộ file zip chứa các file chứng chỉ .crt qua mail (các file tương tự như bên dưới):
Attached to this email you should find a .zip file containing: Root CA Certificate - AAACertificateServices.crt
Intermediate CA Certificate - USERTrustRSAAAACA.crt
Intermediate CA Certificate - SectigoRSADomainValidationSecureServerCA.crt
Your PositiveSSL Certificate - thuanhm_com.crt
Giải thích thêm về các file chứng chỉ SSL:
- Root CA Certificate - AAACertificateServices.crt: Đây là chứng chỉ gốc (root certificate) được cấp bởi một Cơ quan Chứng thực (Certificate Authority - CA) đáng tin cậy. Trong trường hợp này, AAA Certificate Services là CA gốc. Chứng chỉ này là điểm khởi đầu của chuỗi tin cậy và thường được cài đặt sẵn trong hệ điều hành hoặc trình duyệt.
- Intermediate CA Certificate - USERTrustRSAAAACA.crt: Đây là chứng chỉ trung gian thứ nhất trong chuỗi. Nó được ký bởi Root CA và sau đó ký cho chứng chỉ trung gian tiếp theo hoặc chứng chỉ cuối cùng. Chứng chỉ này giúp tạo ra một chuỗi tin cậy từ Root CA đến chứng chỉ của bạn..
- Intermediate CA Certificate - SectigoRSADomainValidationSecureServerCA.crt: Đây là chứng chỉ trung gian thứ hai. Nó được ký bởi chứng chỉ trung gian trước đó (USERTrustRSAAAACA) và sẽ ký cho chứng chỉ cuối cùng của bạn. Sectigo là nhà cung cấp SSL cụ thể trong trường hợp này.
- Your PositiveSSL Certificate - thuanhm_com.crt: Đây là chứng chỉ SSL cụ thể cho tên miền của bạn (thuanhm.com). Nó được ký bởi chứng chỉ trung gian cuối cùng (SectigoRSADomainValidationSecureServerCA). Đây là chứng chỉ mà máy chủ của bạn sẽ sử dụng để xác thực với các trình duyệt của người dùng..
Khi cài đặt SSL trên máy chủ, Chúng ta thường cần kết hợp các file này thành một chuỗi chứng chỉ (certificate chain) theo thứ tự:.
thuanhm_com.crt
SectigoRSADomainValidationSecureServerCA.crt
USERTrustRSAAAACA.crt
AAACertificateServices.crt
Vậy nên bạn cần tạo 1 file domain.crt với nội dung từ các file trên
Nội dung file tương tự như sau:
-----BEGIN CERTIFICATE-----
MKKGMDCCBRigAwIBAgIRAP1GkWZZLHQTJuOYlXZvgyUwDQYJKoZIhvcNAQELBQAw
gY8xCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
BgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE3MDUGA1UE
AxMuU2VjdGlnbyBSU0EgRG9tYWluIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZlciBD
QTAeFw0yNDA5MDYwMDAwMDBaFw0yNTA5MDUyMzU5NTlaMBYxFDASBgNVBAMTC3Ro
dWFuaG0uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlAYS81nB
lEi8NpC5UbWXG7PqOrLYGJO4ZZGxaSkBlw3/ZWI48LxHZRzSUpTfkY894CofEnZq
bdx9LEY2e/5OzDLCeq1zPnOIRgrFWWJ3IdAA2sgrnSDS+hrTy0d75G56rb6qUqhY
QaYoPv6DUoygS8yRdFPh6z2oRdz8BfA+0uDSFUZyin/L12NViIXNtjC1R6Kv2RQZ
B2NRLP6aqzgK2+bPq6Jy2NSE478TqtE9y6nlr3MeoHB6A6K7TTnNQ1OmyKLGpzEd
sJSjfg98mYSiFVt3IYl7MAfKDC1yrLvS5yoR2wfcDzXuWVdaVHEzeSU/slckVxT0
HG/SB0soHwtO/wIDAQABo4IC/TCCAvkwHwYDVR0jBBgwFoAUjYxexFStiuF36Zv5
mwXhuAGNYeEwHQYDVR0OBBYEFNxDld0YPJXu2sF9XzZacx5mtXBVMA4GA1UdDwEB
/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
BQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUwIwYIKwYBBQUHAgEWF2h0
dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCBhAYIKwYBBQUHAQEEeDB2
ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FE
b21haW5WYWxpZGF0aW9uU2VjdXJlU2VydmVyQ0EuY3J0MCMGCCsGAQUFBzABhhdo
dHRwOi8vb2NzcC5zZWN0aWdvLmNvbTAnBgNVHREEIDAeggt0aHVhbmhtLmNvbYIP
d3d3LnRodWFuaG0uY29tMIIBfQYKKwYBBAHWeQIEAgSCAW0EggFpAWcAdQDd3Mo0
ldfhFgXnlTL6x5/4PRxQ39sAOhQSdgosrLvIKgAAAZHI1OkiAAAEAwBGMEQCIBSN
TMTinl9wQcRMF6SZz+GHl4FRgvGtFK/ECkiKuyrDAiAEZe4zTiB1jxhJdd2veRCk
TbX+sUXI1e/ie6ukGhhSKwB2AA3h8jAr0w3BQGISCepVLvxHdHyx1+kw7w5CHrR+
Tqo0AAABkcjU6QAAAAQDAEcwRQIhANLm35C70yY+kJ85by9oQjemor16bjPSBbSB
mZPqDGd7AiBvS6M09iYbEN4hjnP9hdwFikjzSfsOPmuW8ANAy0XHSwB2ABLxTjS9
U3JMhAYZw48/ehP457Vih4icbTAFhOvlhiY6AAABkcjU6QAAAAQDAEcwRQIhAOqZ
pVrW1asKnu150v+LAAhhMWM4i5h5TR8h+lrTSPuMAiB/sgTgAu802utjTL/Wxxd4
Ex/vKNPBSQ1FphD5hc9AVzANBgkqhkiG9w0BAQsFAAOCAQEAzdV5n/zE4GFyWMCv
oe5jmb2fkqF2DwRJIVo9ylTu36G9W4pEVAgRSR8aLRWhBQatFFYTx2Ga1zj7y84u
sp62fAJ1t47DEU+qbnhZ3pRjTPlgjNnXe6Rk4StkHs/Cqwf6bxfBnXKgGWjYT+gU
7yILcjbs0UX9uRML69kGNchgoRQF3Gr6LL+9Li5YqbkmD5MPAsdp0OGGn+nV5oB5
tzCWp1UB7s8BmPrTjiivO4V8o6lQtcO9J6a9qWKxV/wBGAh+wLLTdh7VEGYYn3mS
UmUWo53wKZyiJucIGCEmkLaN8qcIbAkVY4gTEeywkySQciII8JQ+j5Wu7OdntYy0
GxNkQW==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx
MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV
BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE
ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g
VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N
TQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj
eocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E
oKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk
Haswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY
uK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j
BBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb
+ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw
CAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0
LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr
BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv
bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov
L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H
ukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH
7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi
H19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx
RP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv
xvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38
sbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL
l6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq
6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY
LcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5
yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI
s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG
vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ
Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb
IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0
tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E
xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV
icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5
D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ
WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ
5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG
KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg
EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID
ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG
BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t
L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA
A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+
rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+
/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA
CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F
zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA
vGp4z7h/jnZymQyd/teRCBaho1+V
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb
MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj
YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL
MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM
GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua
BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe
3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4
YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR
rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm
ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU
oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t
b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF
AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q
GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2
G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi
l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3
smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
-----END CERTIFICATE-----
3. Tải và Lưu file .key từ nhà cung cấp
Khi mua SSL tại nhà cung cấp vietnix thì bên họ đã tạo sẽ key và file csr cho mình rồi, giờ chỉ cần tải file .key về lưu vào thư mục ssl chung với thư mục domain.crt. Mình cũng đổi tên lại domain.key cho đồng bộ.
4. Kết nối SSH đến máy ảo Linux bằng Visual Studio Code
Bạn mở Visual studio code (VSCode) trên máy tính window, cài extension remote - ssh.
Sau khi cài extension remote-ssh. VSCode của bạn sẽ lập tức hiện icon remote explorer
Tiến hành kết nối đến máy ảo linux bằng công cụ remote explorer
ssh tàikhoản@ip
Mật khẩu máy chủ
Sau khi kết nối thành công, góc trái dưới sẽ hiện ip máy ảo:
4. Cài đặt nginx
Sau khi kết nối thành công, bạn mở cửa sổ terminal bằng nhấn tổ hợp Ctr Shift '
Thực hiện lệnh để cài đặt nginx
sudo apt update
sudo apt install nginx
Khời chạy và kiểm tra nginx:
systemctl start nginx
systemctl status nginx
Xem thành quả. Từ máy tính window bạn mở chorme và gõ địa chỉ ip máy chủ hoặc http:// tênmiền
5. Dùng VSCode để mở cây thư mục máy ảo
Bạn gõ lệnh cd để quay ra thư mục /
cd ..
Kiểm tra vị trí đứng thư mục
ls
pwd
Sau như về thư mục / như ảnh, ta mở cây thư mục / bằng VSCode:
code .
Nhập lại mật khẩu root, ta sẽ mở được toàn bộ thư mục máy ảo bằng vscode:
6. Cài đặt chứng chỉ SSL Comodo PositiveSSL
Sau khi cài đặt nginx thì các file cấu hình nginx được cài đặt trong /etc/nginx nên việc thêm các chứng chỉ SSL cũng sẽ thêm tại đây.
Tại máy ảo vps bạn tạo thư mục ssl trong thư mục /usr/ . Sau đó Copy thư mục ssl từ máy window chứa .key và .crt mà bước 1, 2 đã tạo trước đó vào máy ảo vps bằng VSCode.
Tiến hành cấu hình: Bạn tạo file với cú pháp: tên_miền trong thư mục /etc/nginx/sites-enabled và khai báo tương tự như sau:
Lưu ý: Chỗ server_name các bạn thay vào đúng tên miền của các bạn nhé.
Sau đó bạn reload lại nginx bằng lệnh:
systemctl reload nginx
Kiểm tra thành quả: Bạn truy cập với đường dẫn https:// tên_miền và xem thông tin chứng chỉ
Lưu ý: Nếu trong quá trình thao tác lệnh systemctl reload nginx bị lỗi như bên dưới, bạn có thể vào /var/log/nginx/error.log để đọc lỗi nhé.
Job for nginx.service failed.
See "systemctl status nginx.service" and "journalctl -xe" for details.
Cảm ơn các bạn đã dành thời gian đọc bài viết của mình.