Cách chính xác để triển khai SSL trên localhost


10

Bất cứ ai cũng có thể đề xuất một cách hiện đại để tạo chứng chỉ tự ký được triển khai trên localhost, điều này sẽ được Chrome và Mozilla chấp nhận?

Tôi đã thử thế hệ openssl, tuy nhiên Mozilla phàn nàn rằng nhà phát hành không đáng tin cậy.

Centos 7, nginx


Sử dụng Let Encrypt .
Thomas

2
Đó là tên miền địa phương, Hãy mã hóa chỉ hoạt động khi được đăng ký
Tarlan Mammadzada

2
Điều hướng đến trang web, nhấp nâng cao và nhấp vào thêm ngoại lệ.
Richard Smith

1
Bạn muốn nó xuất hiện an toàn, bạn sẽ cần một CA tự ký và sử dụng nó để ký chứng chỉ máy chủ của bạn, sau đó bạn có thể thêm CA vào kho ủy thác của trình duyệt.
Richard Smith

1
Có vẻ như Firefox đã ngừng chấp nhận chứng chỉ tự ký. Như @RichardSmith nói, bạn sẽ cần sử dụng Tổ chức chứng nhận để tạo chứng chỉ của mình. Trước khi bạn đi sâu vào mỏ đó, bạn có thể cần nghiên cứu ý nghĩa bảo mật của việc điều hành Cơ quan của chính mình.
garethTheRed 30/07/17

Câu trả lời:


9

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.cnfsau đó 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.cnfvà 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 -nodestù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.cnftệ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_serialtù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.keyserver.cervào máy chủ web của bạn và định cấu hình phù hợp.


1
Có một lỗi đánh máy; stinguished_namenên làdistinguished_name
user281357 18/03/18
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.