Khi bạn quản lý khá nhiều các chứng chỉ SSL (certificate) khác nhau, sẽ có lúc bạn dễ dàng mất kiểm soát sự quản lý liên kết của các thông tin file private key và certificate hoặc cũng có khi bạn nhận được certificate và private key nhưng mà không biết cả 2 thông tin đó có khớp với nhau hay không ? Trường hợp khác, thì các Web Server sẽ thông báo lỗi không thể cấu hình HTTPS SSL nếu thông tin Certificate và private key được cấu hình không khớp với nhau.
Lúc đó bạn chỉ còn nước đi kiểm tra xem thông tin private key và certificate bạn muốn kiểm tra khớp nhau ra sao ? Thông tin nào sẽ giúp điều đó ? Bạn sẽ làm cách nào ?
Ok, ở đây mình sẽ hướng dẫn bạn làm việc đấy, chủ yếu là sử dụng câu lệnh “openssl” trên Linux để kiểm tra điều đó nhé.
Contents
1. Kiểm tra file Certificate và private key
Bạn kiểm tra hoặc lưu thông tin Certificate ở 1 file (vd: certificate.crt) và private key ở 1 file (vd: private_key.key). Lưu ý :
+ File chứa thông tin Certificate thường có cấu trúc sau
-----BEGIN CERTIFICATE----- .... -----END CERTIFICATE-----
+ File chứa thông tin private key thường có cấu trúc sau
-----BEGIN PRIVATE KEY----- .... -----END PRIVATE KEY-----
2. Thực hiện kiểm tra bằng “openssl”
Bạn hãy thực hiện 3 câu lệnh sau :
+ Đối với file chứng chỉ SSL (certificate)
# openssl x509 -noout -modulus -in certificate.crt | openssl md5
+ Đối với file private key
# openssl rsa -noout -modulus -in private_key.key | openssl md5
+ Đối với file CSR khi đăng ký SSL (cái này cũng không cần thiết lắm)
# openssl req -noout -modulus -in CSR.csr | openssl md5
Openssl sẽ hash md5 kết quả được xuất ra bởi câu lệnh trước đó (xuất thông tin modulus trong private key và certificate). Nếu cả 2 hoặc 3 kết quả xuất ra của câu lệnh trên đều trả về cùng 1 giá trị thông tin hash thì chứng tỏ các private key, certificate và file CSR là khớp với nhau, có thể an tâm sử dụng. Còn nếu không khớp với nhau ? @.@ , haiz thì kiểm tra lại thông tin private key đi , còn không đúng nữa thì khỏi sài thôi.
Thế thông tin “modulus” là gì ?
Nhìn chung thì bạn nào học về Mã Hoá thì rành hơn mình, theo mình hiểu thì có thể coi đó là một giá trị được sử dụng trong quá trình mã hoá và giải mã, chứa trong cả public key và private key. Nên nếu hai giá trị này không khớp nhau thì không thể nào giải mã thành công được.
Cám ơn các bạn đã theo dõi bài viết.