Cấu hình OCSP stapling cho nginx

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 Globalsign.

i

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.

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 Globalsign Secure 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.globalsign.com.vn bằng tên miền của bạn):

echo QUIT | openssl s_client -connect www.globalsign.com.vn: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”

o