Cấu hình OCSP stapling cho nginx

Ngày đăng: 2015-09-10 14:24:56 | Cập nhật: 2015-10-06 10:58:10

Về OCSP (Online Certificate Status Protocol)

OCSP là một giao thức để kiểm tra tình trạng hợp lệ của một thư số SSL ở thời gian thực. Giao thức này được sinh ra nhằm thay thế cho cách kiểm tra truyền thống dùng CRL (Certificate revocation list). Với cách kiểm tra CRL, trình duyệt sẽ tải một danh sách chứa các chứng thư số SSL đã bị thu hồi của mỗi CA, và việc này sẽ làm chậm quá trình thiết lập kết nối SSL giữa trình duyệt và máy chủ web. Với giao thức OCSP, trình duyệt sẽ gửi một yêu cầu đến một địa chỉ truy vấn OCSP của CA và nhận được một kết quả có chứa tình trạng hiệu lực của chứng thư số SSL của website. Hình dưới đây cho thấy OCSP URI của Symantec.

 

OCSP có hai tồn đọng: tính riêng tư và gia tăng tải trên máy chủ truy vấn OCSP của CA.

Việc OCSP yêu cầu trình duyệt liên hệ với CA để xác nhận tính hợp lệ của chứng thư số SSL trên website sẽ làm mất tính riêng tư. CA sẽ biết được những trang web nào đang được truy cập và thông tin của người đang truy cập chúng.

Nếu một trang web HTTPS được rất nhiều khách truy cập, thì máy chủ truy vấn OCSP của CA sẽ phải xử lý tất cả các yêu cầu OCSP được thực hiện bởi trình duyệt của từng khách khách truy cập.

Về OCSP stapling

Khi máy chủ web được cấu hình OCSP stapling hoàn chỉnh, đầu tiên máy chủ sẽ thực hiện truy vấn OCSP đến máy chủ OCSP của CA và lưu trữ kết quả trên bộ nhớ đệm của máy chủ web. Máy chủ web sẽ tự động thực hiện lại quá trình truy vấn OCSP và cập nhật kết quả này sau một khoảng thời gian nhất định. Kết quả truy vấn OCSP này sẽ được được đính kèm trong quá trình thực hiện TLS Handshake giữa trình duyệt và máy chủ web thông qua thuộc tính mở rộng Certificate Status Request. Từ đó trình duyệt có thể sử dụng ngay kết quả kiểm tra tình trạng hợp lệ của chứng thư số SSL mà không cần phải thực hiện truy vấn đến máy chủ OCSP của CA.

Kiểm tra hỗ trợ OCSP stapling

Bạn cần phải kiểm tra phiên bản của nginx để biết có hỗ trợ OCSP stapling hay không. OCSP stapling được hỗ trợ kể từ phiên bản nginx 1.3.7 trở đi.

Bạn gõ lệnh:

nginx -v

Tải về CABundle

Bạn cần phải tải về máy chủ web CABundle (Intermediate CA và Root CA) tương ứng với chứng thư số SSL mà bạn đã mua cho website. Tham khảo tại: 

Bạn cần nối cả hai file Intermediate CA và Root CA lại thành một file duy nhất và đặt tên là /usr/local/ssl/crt2015/cabundle.crt theo thứ tự:

Intermediate CA
Root CA

Ví dụ CABundle của Symantec Secure Site Pro with EV sẽ có nội dung như sau:

-----BEGIN CERTIFICATE-----
MIIFKzCCBBOgAwIBAgIQfuFKb2/v8tN/P61lTTratDANBgkqhkiG9w0BAQsFADCB
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW
ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
aG9yaXR5IC0gRzUwHhcNMTMxMDMxMDAwMDAwWhcNMjMxMDMwMjM1OTU5WjB3MQsw
CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV
BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVjIENs
YXNzIDMgRVYgU1NMIENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQDYoWV0I+grZOIy1zM3PY71NBZI3U9/hxz4RCMTjvsR2ERaGHGOYBYmkpv9
FwvhcXBC/r/6HMCqo6e1cej/GIP23xAKE2LIPZyn3i4/DNkd5y77Ks7Imn+Hv9hM
BBUyydHMlXGgTihPhNk1++OGb5RT5nKKY2cuvmn2926OnGAE6yn6xEdC0niY4+wL
pZLct5q9gGQrOHw4CVtm9i2VeoayNC6FnpAOX7ddpFFyRnATv2fytqdNFB5suVPu
IxpOjUhVQ0GxiXVqQCjFfd3SbtICGS97JJRL6/EaqZvjI5rq+jOrCiy39GAI3Z8c
zd0tAWaAr7MvKR0juIrhoXAHDDQPAgMBAAGjggFdMIIBWTAvBggrBgEFBQcBAQQj
MCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9zMi5zeW1jYi5jb20wEgYDVR0TAQH/BAgw
BgEB/wIBADBlBgNVHSAEXjBcMFoGBFUdIAAwUjAmBggrBgEFBQcCARYaaHR0cDov
L3d3dy5zeW1hdXRoLmNvbS9jcHMwKAYIKwYBBQUHAgIwHBoaaHR0cDovL3d3dy5z
eW1hdXRoLmNvbS9ycGEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3MxLnN5bWNi
LmNvbS9wY2EzLWc1LmNybDAOBgNVHQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwx
GjAYBgNVBAMTEVN5bWFudGVjUEtJLTEtNTMzMB0GA1UdDgQWBBQBWavn3ToLWaZk
Y9bPIAdX1ZHnajAfBgNVHSMEGDAWgBR/02Wnwt3su/AwCfNDOfoCrzMxMzANBgkq
hkiG9w0BAQsFAAOCAQEAQgFVe9AWGl1Y6LubqE3X89frE5SG1n8hC0e8V5uSXU8F
nzikEHzPg74GQ0aNCLxq1xCm+quvL2GoY/Jl339MiBKIT7Np2f8nwAqXkY9W+4nE
qLuSLRtzsMarNvSWbCAI7woeZiRFT2cAQMgHVHQzO6atuyOfZu2iRHA0+w7qAf3P
eHTfp61Vt19N9tY/4IbOJMdCqRMURDVLtt/JYKwMf9mTIUvunORJApjTYHtcvNUw
LwfORELEC5n+5p/8sHiGUW3RLJ3GlvuFgrsEL/digO9i2n/2DqyQuFa9eT/ygG6j
2bkPXToHHZGThkspTOHcteHgM52zyzaRS/6htO7w+Q==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW
ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1
nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex
t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz
SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE
p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y
5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK
WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ
4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N
hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
-----END CERTIFICATE-----

Cấu hình OCSP stapling cho website

Bạn cần mở file cấu hình của nginx (thường được lưu tại /etc/nginx/conf.d/ssl.conf) và thêm vào dòng sau ở bên trong block server:

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /usr/local/ssl/certificate/cabundle.crt;

Restart lại nginx

Bạn gõ lệnh:

service nginx restart

Kiểm tra OCSP stapling

Bạn có thể dùng OpenSSL để kiểm tra hoạt động của OCSP stapling bằng cách gõ lệnh sau (thay thế www.baomat.website bằng tên miền của bạn):

echo QUIT | openssl s_client -connect www.baomat.website:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'
Nếu kết quả trả về có dạng như sau thì tức là bạn đã cấu hình OCSP cho máy chủ web thành công. Ngược lại sẽ không có kết quả nào được hiển thị:
OCSP response:
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: 9BF91709B76BCA37C883E3D0020DFD91E48785BF
    Produced At: Sep  8 20:08:21 2015 GMT
    Responses:
    Certificate ID:
      Hash Algorithm: sha1
      Issuer Name Hash: 400B467AF1E6B2D30983BA0D607E7E59374824C4
      Issuer Key Hash: C39CF3FCD3460834BBCE467FA07C5BF3E208CB59
      Serial Number: 45A7
    Cert Status: good
    This Update: Sep  8 20:08:21 2015 GMT
    Next Update: Sep 15 20:08:21 2015 GMT

Bạn cũng có thể dùng Qualys SSL Tester để kiểm tra: https://www.ssllabs.com/ssltest/

Trong kết quả test, bạn kiểm tra mục "OCSP stapling"