1. Tạo khóa riêng cho chứng chỉ CA
openssl genrsa 2048 > ca-key.pem
2. Tạo chứng chỉ CA bằng khóa riêng
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem
3. Tạo chứng chỉ ứng dụng khách
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key1.pem > client-req.pem
4. Tạo chứng chỉ ứng dụng khách được ký bới CA ở bước 2
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert1.pem
5. Chuyển pem thành PKCS #12 (dùng cho JAVA,...)
openssl pkcs12 -export -in client-cert1.pem -inkey client-key1.pem -out client-cert1.pfx
Config client Certificate trong nginx
Thêm các dòng sau trong file config:
ssl_client_certificate /home/ubuntu/openssl/CA/client-cert1.pem;
ssl_verify_client optional;
location ~ ^/api/(path check client Certificate 1|path check client Certificate 2) {
if ($ssl_client_verify != "SUCCESS") { return 403; }
proxy_pass http://localhost:8080;
proxy_pass_request_headers on;
proxy_set_header X_CUSTOM_HEADER $http_x_custom_header;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}