Cảnh báo: Trước khi bạn đi sâu vào lĩnh vực điều hành Cơ quan chứng nhận của riêng bạn, bạn có thể cần nghiên cứu ý nghĩa bảo mật!
Nhưng nếu bạn phải, hãy đọc tiếp một CA nhanh và bẩn sẽ cung cấp cho bạn https://localhost/
mà không có thông báo cảnh báo ...
Tạo tệp văn bản sau:
# OpenSSL configuration for Root CA
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = Test Root CA
[ x509_ext ]
basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
Lưu lại root.cnf
sau đó tạo yêu cầu với:
$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf
Điều này sẽ tạo chứng chỉ Root CA của bạn ( root.cer
) và khóa riêng Root CA ( root.key
) mà bạn phải giữ riêng tư. Nó sẽ nhắc nhập mật khẩu cho khóa riêng - đảm bảo bạn chọn mật khẩu mạnh.
Bây giờ tạo một tệp cấu hình cho chứng chỉ máy chủ:
# OpenSSL configuration for end-entity cert
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = localhost
[ x509_ext ]
keyUsage=critical,digitalSignature,keyAgreement
subjectAltName = @alt_names
# Multiple Alternate Names are possible
[alt_names]
DNS.1 = localhost
# DNS.2 = altName.example.com
Lưu nó dưới dạng server.cnf
và tạo yêu cầu với:
openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf
Ở trên sẽ tạo ra một khóa riêng ( server.key
) mà bạn phải bảo vệ. Trong trường hợp này, khóa không được bảo vệ bằng mật khẩu, nhưng bạn có thể thêm mật khẩu bằng cách xóa -nodes
tùy chọn.
Cuối cùng, ký yêu cầu với Root CA mới và các tiện ích mở rộng từ server.cnf
tệp (để thuận tiện):
$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext
Lưu ý: chọn bất kỳ số ngẫu nhiên cho -set_serial
tùy chọn.
Nó sẽ hỏi mật khẩu bạn đã nhập khi bạn tạo Root CA.
Chứng chỉ máy chủ ( server.cer
) sẽ được tạo.
Bây giờ, hãy thêm chứng chỉ Root CA ( root.cer
) vào cửa hàng neo tin cậy của Firefox và chạy thử nghiệm với:
$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www
Lưu ý: Bạn có thể gặp lỗi nếu bạn đã có máy chủ đang chạy trên cổng 443. Trong trường hợp đó, hãy dừng máy chủ đang chạy hoặc thay đổi số cổng ở trên sang một cổng không sử dụng khác.
Khi bạn điều hướng đến https://localhost
(hoặc https://localhost:<port>
nếu bạn đã thay đổi số cổng ở trên) với Firefox, bây giờ bạn sẽ không thấy cảnh báo nào và được cung cấp một danh sách các mật mã mà cài đặt OpenSSL của bạn có thể cung cấp.
Khi bạn hài lòng với kết quả, hãy thêm server.key
và server.cer
vào máy chủ web của bạn và định cấu hình phù hợp.