Bắt Chrome chấp nhận chứng chỉ localhost tự ký


1212

Tôi đã tạo chứng chỉ SSL tự ký cho localhost CN. Firefox chấp nhận chứng chỉ này sau khi ban đầu phàn nàn về nó, như mong đợi. Tuy nhiên, Chrome và IE từ chối chấp nhận nó, ngay cả sau khi thêm chứng chỉ vào cửa hàng chứng chỉ hệ thống trong mục Rễ đáng tin cậy. Mặc dù chứng chỉ được liệt kê là được cài đặt chính xác khi tôi nhấp vào "Xem thông tin chứng chỉ" trong cửa sổ bật lên HTTPS của Chrome, nhưng nó vẫn khẳng định chứng chỉ không thể tin cậy được.

Tôi phải làm gì để Chrome chấp nhận chứng chỉ và ngừng phàn nàn về điều đó?


14
Khi bạn nói Firefox phàn nàn về nó ban đầu, bạn có nghĩa là nó yêu cầu bạn thêm một ngoại lệ chứng chỉ? Điều này không nên xảy ra nếu chứng chỉ được cài đặt đúng. Tôi nghe có vẻ như cả ba trình duyệt đều phàn nàn, nhưng Firefox cho phép bạn hủy khiếu nại. Tôi đang đăng bài này dưới dạng bình luận vì tôi không có câu trả lời cụ thể, nhưng tôi đã thực hiện chính xác điều này và nó hoạt động tốt trong cả ba trình duyệt. Tôi sẽ đề nghị bạn thử và làm cho nó hoạt động trên IE trước, và sau đó một khi đó là lo lắng hạnh phúc về hai cái kia. Xin lỗi tôi không thể giúp đỡ nhiều hơn!
starskythehutch

1
Bạn phải tạo một chứng chỉ được định dạng tốt, bao gồm cả cách trình bày tên DNS. OpenSSL không trình bày chúng theo cách thỏa mãn các trình duyệt bên ngoài. Xem Làm thế nào để tạo chứng chỉ tự ký với openssl? .
jww

4
Firefox không sử dụng kho chứng chỉ hệ thống.
tò mò

4
Nếu chữ ký của chứng chỉ của bạn sử dụng SHA-1, các phiên bản Chrome gần đây (khoảng 57) sẽ hiển thị các cảnh báo ngay cả khi bạn đã có thể thêm chứng chỉ tùy chỉnh thành công . Bất kể, bảng "Bảo mật" của các công cụ dành cho nhà phát triển sẽ nói cụ thể hơn vấn đề là gì, ví dụ : net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM.
SeldomNeedy

2
Tôi chỉ ngừng sử dụng Chrome cho mục đích phát triển vì nó không thân thiện với nhà phát triển. Thông thường, một người cuối cùng trong tình huống này sẽ biết họ đang làm gì. Cảm ơn, nhưng không cảm ơn. Tôi đã có đủ sự thất vọng với Chrome!
GTodorov

Câu trả lời:


66

2020/05/22 : Với chỉ 6 lệnh shell , bạn có thể thực hiện điều này.

Vui lòng không thay đổi cài đặt bảo mật trình duyệt của bạn.

Với mã sau đây, bạn có thể (1) trở thành CA của riêng mình, (2) sau đó ký chứng chỉ SSL của bạn dưới dạng CA. (3) Sau đó, nhập chứng chỉ CA (không phải chứng chỉ SSL, đi vào máy chủ của bạn) vào Chrome / Chromium. (Vâng, điều này hoạt động ngay cả trên Linux.)

######################
# Become a Certificate Authority
######################

# Generate private key
openssl genrsa -des3 -out myCA.key 2048
# Generate root certificate
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 825 -out myCA.pem

######################
# Create CA-signed certs
######################

NAME=mydomain.com # Use your own domain name
# Generate a private key
openssl genrsa -out $NAME.key 2048
# Create a certificate-signing request
openssl req -new -key $NAME.key -out $NAME.csr
# Create a config file for the extensions
>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
DNS.2 = bar.$NAME # Optionally, add additional domains (I've added a subdomain here)
IP.1 = 192.168.0.13 # Optionally, add an IP address (if the connection which you have planned requires it)
EOF
# Create the signed certificate
openssl x509 -req -in $NAME.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial \
-out $NAME.crt -days 825 -sha256 -extfile $NAME.ext

Tóm lại:

  1. Trở thành một CA
  2. Ký chứng chỉ của bạn bằng khóa CA của bạn
  3. Nhập myCA.pemdưới dạng Cơ quan trong cài đặt Chrome của bạn (Cài đặt> Quản lý chứng chỉ> Chính quyền> Nhập)
  4. Sử dụng .crttệp trong máy chủ của bạn

Các bước bổ sung (đối với Mac, ít nhất):

  1. Nhập chứng chỉ CA tại "Tệp> Nhập tệp", sau đó cũng tìm thấy nó trong danh sách, nhấp chuột phải vào nó, mở rộng "> Tin cậy" và chọn "Luôn luôn"
  2. Thêm extendedKeyUsage=serverAuth,clientAuthbên dưới basicConstraints=CA:FALSEvà đảm bảo bạn đặt "CommonName" giống như $NAMEkhi yêu cầu thiết lập

Bạn có thể kiểm tra công việc của bạn

openssl verify -CAfile myCA.pem -verify_hostname bar.mydomain.com mydomain.com.crt

2
Các trình duyệt và hệ điều hành @maverick giao hàng với số lượng CA hạn chế mà họ tin tưởng. Mặc dù bất kỳ ai cũng có thể trở thành CA, để khiến mọi người tin tưởng vào chứng chỉ của họ, họ cần mọi người thêm thủ công làm CA đáng tin cậy (như chúng tôi bảo Chrome phải làm khi chúng tôi nhập chứng chỉ theo cách thủ công).
JellicleCat

2
Tuyệt quá! Hai bài phát biểu cho người dùng Mac như tôi: Trên dòng cuối cùng, sử dụng -days 825thay vì -days 1825do superuser.com/questions/1492643/... , và nó đáng chú ý là để import cert gốc vào Key Chain Access, bạn cần không chỉ để "File > Nhập tệp ", nhưng sau đó cũng tìm thấy nó trong danh sách, nhấp chuột phải vào tệp, mở rộng"> Tin cậy "và chọn" Luôn luôn ".
michielbdejong

2
nếu bạn cần tệp PEM thay vì tệp CRT cho máy chủ dev cục bộ, đừng lo lắng, chỉ cần kết hợp các tệp .crt.csr và lưu chúng dưới dạng tệp .pem , và bạn đã sẵn sàng.
Kerem Baydoğan

1
TẠI CÔNG TRÌNH NÓ MỚI NHẤT! BRAVO cho câu trả lời này. Xin đừng quên tải myCA.pem vào Chrome hoặc Firefox của bạn (Cài đặt> Quản lý chứng chỉ> Chính quyền> Nhập)
Fryser wow

3
Tôi đã thay đổi DNS.1 thành IP.1 cho máy chủ LAN dựa trên IP của mình. Nó hoạt động. Cảm ơn.
dw1

766

Đối với localhostchỉ:

Chỉ cần dán cái này vào chrome của bạn:

chrome://flags/#allow-insecure-localhost

Bạn sẽ thấy văn bản được tô sáng nói: Cho phép chứng chỉ không hợp lệ đối với tài nguyên được tải từ localhost

Nhấn vào đây Enable.


3
Vô hiệu hóa cảnh báo ... mà còn cả bộ đệm! bug.chromium.org/p/chromium/issues/detail?id=103875
Hugo Wood

4
điều này sẽ không hoạt động nếu bạn đang sử dụng chrome ở chế độ Ẩn danh (ví dụ: để chuyển danh tính) nhưng rất sạch sẽ
bay vào

5
Điều này - nếu bạn có thể chịu được thông báo Không bảo mật màu đỏ gây phiền nhiễu. Nếu không, đó là những câu thần chú mở cửa bí ẩn sau đó cố gắng đối phó với người quản lý chứng chỉ nội bộ trong Chrome.
timbo

10
Tôi không biết tại sao câu trả lời này đã được bình chọn nhưng có sự khác biệt giữa chứng chỉ Không hợp lệ và chứng chỉ tự ký. Câu hỏi là về chứng chỉ tự ký.
Mehdi

2
Không làm việc cho tôi cả. Điều làm việc cho tôi là tạo ra một chứng chỉ tự ký bao gồm chủ đềAltName, như được giải thích bởi câu trả lời này: stackoverflow.com/a/42917227/2873507
Vic Seedoubleyew

507

Điều này làm việc cho tôi:

  1. Sử dụng Chrome, nhấn một trang trên máy chủ của bạn thông qua HTTPS và tiếp tục qua trang cảnh báo màu đỏ (giả sử bạn chưa thực hiện việc này).
  2. Mở ra Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates.
  3. Nhấp vào Authoritiestab và cuộn xuống để tìm chứng chỉ của bạn dưới Tên Tổ chức mà bạn đã cung cấp cho chứng chỉ.
  4. Chọn nó, nhấp vào Chỉnh sửa ( LƯU Ý : trong các phiên bản Chrome gần đây, nút hiện là "Nâng cao" thay vì "Chỉnh sửa"), chọn tất cả các hộp và nhấp vào OK. Bạn có thể phải khởi động lại Chrome.

Bạn sẽ có được khóa màu xanh lá cây đẹp trên các trang của bạn bây giờ.

EDIT: Tôi đã thử lại điều này trên một máy mới và chứng chỉ không xuất hiện trên cửa sổ Manage Chứng chỉ chỉ bằng cách tiếp tục từ trang chứng chỉ không tin cậy màu đỏ. Tôi đã phải làm như sau:

  1. Trên trang có chứng chỉ không tin cậy ( https://được gạch chéo màu đỏ), nhấp vào khóa> Thông tin chứng chỉ. GHI CHÚ: trên các phiên bản chrome mới hơn, bạn phải mở Developer Tools > Securityvà chọn View certificate.
  2. Nhấp vào Details tab > Export. Chọn PKCS #7, single certificateđịnh dạng tệp.
  3. Sau đó làm theo hướng dẫn ban đầu của tôi để đến trang Quản lý Chứng chỉ. Nhấp vào Authorities tab > Importvà chọn tệp mà bạn đã xuất chứng chỉ và đảm bảo chọn PKCS #7, single certificate loại tệp .
  4. Nếu được nhắc cửa hàng chứng nhận, hãy chọn Cơ quan chứng nhận gốc đáng tin cậy
  5. Kiểm tra tất cả các hộp và nhấp vào OK. Khởi động lại Chrome.

143
Tôi đã thử điều này trên máy Linux, nhưng nó cho biết việc nhập thất bại vì xxx.xxx.com: Không phải là Cơ quan chứng nhận.
matt

15
Cảm ơn @kellen .. tuy nhiên, Sử dụng Chrome Phiên bản 29.0.1547.57 beta, dường như không có tùy chọn "Xuất" ở bất kỳ đâu trên Thông tin Chứng chỉ. Điều đó nói rằng, có một "Details" phần nhưng nó không có trong hình thức của một Tab. Nó xuất hiện như một khối đóng mở / mở rộng. i.imgur.com/dDmNEIh.png
kỵ binh

20
Trong Chrome 37, không Exportcòn nút mô tả hữu ích nữa, Điều này dường như đã được thay thế bằng Copy to filenút tuyệt vời . Tại sao 'xuất khẩu' không được giữ, tâm trí chỉ có kính râm
kolin

13
@Jakobud, chỉ cần kéo biểu tượng chứng chỉ vào màn hình nền hoặc một cái gì đó và nó được xuất ra. Tuy nhiên, phần còn lại của câu trả lời không hoạt động trên OS X (Yosemite) theo như tôi có thể nói (Chrome 39).
db

33
Kể từ Chrome 56, để truy cập cài đặt chứng chỉ SSL trong Windows, bạn phải sử dụng Công cụ dành cho nhà phát triển (CTRL + SHIFT + i), chuyển đến tab "Bảo mật" và nhấp vào nút "Xem chứng chỉ".
void.pulum

167

CẬP NHẬT CHO CHROME 58+ (LIÊN QUAN 2017-04-19)

Kể từ Chrome 58, khả năng xác định máy chủ chỉ sử dụng commonName đã bị xóa . Chứng chỉ bây giờ phải được sử dụng subjectAltNameđể xác định (các) máy chủ của họ. Xem thêm thảo luận ở đâytheo dõi lỗi ở đây . Trước đây, chỉ subjectAltNameđược sử dụng cho các máy chủ đa máy chủ nên một số công cụ CA nội bộ không bao gồm chúng.

Nếu trước đây, các certs tự ký của bạn hoạt động tốt nhưng đột nhiên bắt đầu phát sinh lỗi trong Chrome 58, đây là lý do.

Vì vậy, bất kỳ phương pháp nào bạn đang sử dụng để tạo chứng chỉ tự ký (hoặc chứng chỉ được ký bởi CA tự ký), hãy đảm bảo rằng chứng chỉ của máy chủ chứa a subjectAltNamevới mục nhập DNSvà / hoặc IPmục nhập phù hợp , ngay cả khi chỉ dành cho một máy chủ lưu trữ .

Đối với openssl, điều này có nghĩa là cấu hình OpenSSL của bạn ( /etc/ssl/openssl.cnftrên Ubuntu) phải có nội dung tương tự như sau đối với một máy chủ:

[v3_ca]   # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com

hoặc cho nhiều máy chủ:

[v3_ca]   # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com, DNS:host1.example.com, DNS:*.host2.example.com, IP:10.1.2.3

Trong xem cert của Chrome (mà đã chuyển sang tab "Security" dưới F12), bạn sẽ thấy nó được liệt kê dưới Extensionsnhư Certificate Subject Alternative Name:

Trình xem chứng chỉ Chrome


12
Cảm ơn bạn đã đăng bài về bản cập nhật Chrome 58+! Đối với những người đang tìm cách tạo chứng chỉ tự ký bao gồm SAN trong Windows, một cách dễ dàng là sử dụng lệnh lệnh PowerShell New-SelfSignCertert. New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My
DanO

3
@DanO CẢM ƠN BẠN! Không có cách giải quyết nào khác làm việc với tôi trên Win10. Rất vui được biết ít nhất Powershell tạo ra các certs hợp lệ!
Brian Donahue

1
Đã tìm thấy giải pháp trên Reddit cho Chrome 58+ và nó hoạt động! Trong dấu nhắc lệnh của Quản trị viên: reg thêm HKLM \ Software \ Chính sách \ Google \ Chrome / v EnableCommonNameFallbackForLocalAnchors / t REG_DWORD / d 1
IrfanClemson

3
Để tạo chính sách trên Linux, bạn cần tạo một tệp chính sách, giả sử /etc/opt/chrome/policies/managed/EnableCommonNameFallbackForLocalAnchors.jsonvới các nội dung sau: { "EnableCommonNameFallbackForLocalAnchors": true }
seanf

5
"Xem cert Trong Chrome (mà đã chuyển sang thẻ 'Security' dưới F12), bạn sẽ thấy nó được liệt kê dưới Extensionsnhư Certificate Subject Alternative Name". Tôi không thấy bất kỳ phần "Tiện ích mở rộng" nào khi tôi hiển thị tab Bảo mật trong các công cụ phát triển F12 (Chrome 62). Nó đã được chuyển đến nơi khác?
Thunderforge

143

Trên máy Mac, bạn có thể sử dụng tiện ích Keychain Access để thêm chứng chỉ tự ký vào móc khóa Hệ thống và sau đó Chrome sẽ chấp nhận nó. Tôi tìm thấy các hướng dẫn từng bước ở đây:

Google Chrome, Mac OS X và Chứng chỉ SSL tự ký

Về cơ bản:

  1. bấm đúp vào biểu tượng khóa bằng X và kéo và thả biểu tượng chứng chỉ vào màn hình nền,
  2. mở tệp này (kết thúc bằng phần mở rộng .cer); điều này sẽ mở ứng dụng móc khóa cho phép bạn phê duyệt chứng chỉ.

12
Điều quan trọng, bạn có thể cần phải khởi động lại Chrome để điều này có hiệu lực.
Xiong Chiamiov

10
Tôi đã phải chỉnh sửa tùy chọn chứng chỉ và cho phép tin tưởng vào SSL theo cách thủ công
NeDark

1
Điều này làm việc với tôi trên Yosemite, 10.10.5, Phiên bản Chrome 46.0.2490.80 (64-bit). Cảm ơn!
romellem

2
Làm việc trên El Capitan, không cần khởi động lại. Tôi đã thêm chứng chỉ, nhấp vào nó, mở rộng danh sách Tin cậy và đặt nó Always Trustcho phần SSL. Về cơ bản những gì @NeDark nói.
Tom

1
Tôi cần phải kéo và thả chứng chỉ từ máy tính để bàn vào Keychain và sau đó thực hiện phê duyệt.
jmq

130

Nhấp vào bất cứ nơi nào trên trang và nhập BYPASS_SEQUENCE

" thisisunsafe" là BYPASS_SEQUENCE cho Chrome phiên bản 65

" badidea" Chrome phiên bản 62 - 64.

" danger" Được sử dụng để hoạt động trong các phiên bản trước của Chrome

Bạn không cần phải tìm trường đầu vào, chỉ cần gõ nó. Nó cảm thấy kỳ lạ nhưng nó đang làm việc.

Tôi đã thử nó trên Mac High Sierra.

Để kiểm tra lại nếu họ thay đổi lần nữa, hãy chuyển đến Mã nguồn crom mới nhất

Để tìm BYPASS_SEQUENCE, tại thời điểm này, nó trông như thế:

var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl');

Bây giờ họ đã ngụy trang, nhưng để xem BYPASS_SEQUENCE thực sự, bạn có thể chạy dòng sau trong bảng điều khiển trình duyệt.

console.log(window.atob('dGhpc2lzdW5zYWZl'));

6
wtf, cảm ơn vì điều này đã làm việc cho tôi ubfox 16.04 63.0.3239.84
gries

8
Mã này đã được thay đổi kể từ phiên bản mới. Cụm từ mới làthisisunsafe
The Java Guy

6
Trong Chrome 65 trên Windows 10, việc nhập thisisunsafedường như chỉ có ảnh hưởng đến việc thêm trang web này vào các ngoại lệ. (Thanh địa chỉ vẫn ghi "Không an toàn" màu đỏ.)
Ryan

2
Điều này đang hoạt động nhưng chỉ cho lần tải đầu tiên, nếu bạn điều hướng trang bạn phải nhập lại bupass_squence
talsibony

"thisisunafe" BYPASS_SEQUENCE là điều duy nhất từ ​​trang này hoạt động với tôi trên Mac Chrome 72. Tôi cảm thấy như mình không cần phải bận tâm đến việc tạo chứng chỉ tự ký của mình ...!
Jono

95

Linux

Nếu bạn đang sử dụng Linux, bạn cũng có thể theo dõi các trang wiki chính thức này:

Về cơ bản:

  • nhấp vào biểu tượng khóa bằng dấu X,
  • chọn thông tin chứng chỉ
  • đi tới tab Chi tiết
  • Nhấp vào Xuất ... (lưu dưới dạng tệp)

Bây giờ, lệnh sau sẽ thêm chứng chỉ (trong đó YOU_FILE là tệp đã xuất của bạn):

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE

Để liệt kê tất cả các chứng chỉ của bạn, hãy chạy lệnh sau:

certutil -d sql:$HOME/.pki/nssdb -L

Nếu nó vẫn không hoạt động, bạn có thể bị ảnh hưởng bởi lỗi này: Vấn đề 55050: Lỗi SSL SSL 8179

PS Vui lòng đảm bảo rằng bạn có libnss3-tools, trước khi bạn có thể sử dụng các lệnh trên.

Nếu bạn không có, vui lòng cài đặt nó bằng cách:

sudo apt-get install libnss3-tools # on Ubuntu
sudo yum install nss-tools # on Fedora, Red Hat, etc.

Là một phần thưởng, bạn có thể sử dụng các tập lệnh tiện dụng sau:

$ cat add_cert.sh
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1
$ cat list_cert.sh
certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
$ cat download_cert.sh
echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p'

Sử dụng:

add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]

Xử lý sự cố

  • Chạy Chrome với --auto-ssl-client-auththam số

    google-chrome --auto-ssl-client-auth


Tuyệt vời, tôi yêu kịch bản của bạn. Mặc dù vậy, bạn không cần QUIT (dù sao cũng không có lệnh HTTP như QUIT) và bạn cũng không cần sed, các công cụ nss có thể lọc chứng chỉ giữa BEGIN và END CERT. Vì vậy, download_cert.shcó thể chỉ đơn giản là thế này:echo | openssl s_client -connect $1:443
Paul Tobias

Tôi đã thử các tùy chọn khác nhưng chỉ có tùy chọn này hiện đang hoạt động trong Chrome 4x cho linux, nó đã từ chối nhập vào bất kỳ cửa hàng nào bằng các công cụ tích hợp.
Kendrick

93

Trên máy Mac, bạn có thể tạo chứng chỉ được Chrome và Safari tin cậy hoàn toàn ở cấp hệ thống bằng cách thực hiện như sau:

    # create a root authority cert
    ./create_root_cert_and_key.sh

    # create a wildcard cert for mysite.com
    ./create_certificate_for_domain.sh mysite.com

    # or create a cert for www.mysite.com, no wildcards
    ./create_certificate_for_domain.sh www.mysite.com www.mysite.com

Ở trên sử dụng các tập lệnh sau và tệp hỗ trợ v3.extđể tránh lỗi thiếu tên thay thế của chủ đề

Nếu bạn muốn tạo một chứng chỉ tự ký mới được tin cậy hoàn toàn bằng chính quyền gốc của mình, bạn có thể thực hiện bằng các tập lệnh này.

created_root_cert_and_key.sh

    #!/usr/bin/env bash
    openssl genrsa -out rootCA.key 2048
    openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

created_cert ve_for_domain.sh

    #!/usr/bin/env bash

    if [ -z "$1" ]
    then
      echo "Please supply a subdomain to create a certificate for";
      echo "e.g. www.mysite.com"
      exit;
    fi

    if [ ! -f rootCA.pem ]; then
      echo 'Please run "create_root_cert_and_key.sh" first, and try again!'
      exit;
    fi
    if [ ! -f v3.ext ]; then
      echo 'Please download the "v3.ext" file and try again!'
      exit;
    fi

    # Create a new private key if one doesnt exist, or use the xeisting one if it does
    if [ -f device.key ]; then
      KEY_OPT="-key"
    else
      KEY_OPT="-keyout"
    fi

    DOMAIN=$1
    COMMON_NAME=${2:-*.$1}
    SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
    NUM_OF_DAYS=825
    openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr
    cat v3.ext | sed s/%%DOMAIN%%/"$COMMON_NAME"/g > /tmp/__v3.ext
    openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext 

    # move output files to final filenames
    mv device.csr "$DOMAIN.csr"
    cp device.crt "$DOMAIN.crt"

    # remove temp file
    rm -f device.crt;

    echo 
    echo "###########################################################################"
    echo Done! 
    echo "###########################################################################"
    echo "To use these files on your server, simply copy both $DOMAIN.csr and"
    echo "device.key to your webserver, and use like so (if Apache, for example)"
    echo 
    echo "    SSLCertificateFile    /path_to_your_files/$DOMAIN.crt"
    echo "    SSLCertificateKeyFile /path_to_your_files/device.key"

v3.ext

    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names

    [alt_names]
    DNS.1 = %%DOMAIN%%

Thêm một bước nữa - Cách làm cho các certs tự ký hoàn toàn đáng tin cậy trong Chrome / Safari

Để cho phép các chứng chỉ tự ký được HOÀN TOÀN đáng tin cậy trong Chrome và Safari, bạn cần nhập thẩm quyền chứng chỉ mới vào máy Mac của mình. Để làm như vậy, hãy làm theo các hướng dẫn này hoặc hướng dẫn chi tiết hơn về quy trình chung này trên trang web mitmproxy :

Bạn có thể thực hiện một trong 2 cách này, tại dòng lệnh, sử dụng lệnh này sẽ nhắc bạn nhập mật khẩu:

$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain rootCA.pem

hoặc bằng cách sử Keychain Accessdụng ứng dụng:

  1. Mở truy cập Keychain
  2. Chọn "Hệ thống" trong danh sách "Móc khóa"
  3. Chọn "Chứng chỉ" trong danh sách "Danh mục"
  4. Chọn "Tệp | Nhập các mục ..."
  5. Duyệt đến tệp được tạo ở trên, "rootCA.pem", chọn tệp đó và nhấp vào "Mở"
  6. Chọn chứng chỉ mới được nhập của bạn trong danh sách "Chứng chỉ".
  7. Nhấp vào nút "i" hoặc nhấp chuột phải vào chứng chỉ của bạn và chọn "Nhận thông tin"
  8. Mở rộng tùy chọn "Tin cậy"
  9. Thay đổi "Khi sử dụng chứng chỉ này" thành "Luôn tin tưởng"
  10. Đóng hộp thoại và bạn sẽ được nhắc nhập mật khẩu của mình.
  11. Đóng và mở lại bất kỳ tab nào đang sử dụng tên miền mục tiêu của bạn và nó sẽ được tải an toàn!

và như một phần thưởng, nếu bạn cần các máy khách java tin tưởng các chứng chỉ, bạn có thể làm như vậy bằng cách nhập certs của bạn vào kho khóa java. Lưu ý điều này sẽ xóa chứng chỉ khỏi kho khóa nếu nó đã tồn tại, vì nó cần cập nhật nó trong trường hợp mọi thứ thay đổi. Tất nhiên nó chỉ làm điều này cho các certs được nhập khẩu.

import_certs_in_cản_folder_into_java_keystore.sh

KEYSTORE="$(/usr/libexec/java_home)/jre/lib/security/cacerts";

function running_as_root()
{
  if [ "$EUID" -ne 0 ]
    then echo "NO"
    exit
  fi

  echo "YES"
}

function import_certs_to_java_keystore
{
  for crt in *.crt; do 
    echo prepping $crt 
    keytool -delete -storepass changeit -alias alias__${crt} -keystore $KEYSTORE;
    keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE
    echo 
  done
}

if [ "$(running_as_root)" == "YES" ]
then
  import_certs_to_java_keystore
else
  echo "This script needs to be run as root!"
fi

Có "Lỗi mở khóa riêng rootCA.key" khi chạy $ ./create_root_cert_and_key.sh. macOS 10.12.4 và OpenSSL 0.9.8zh 14 tháng 1 năm 2016.
bánh rán

1
Chạy $ openssl genrsa -out rootCA.key 2048trước khi $ ./create_root_cert_and_key.shsửa lỗi "Lỗi mở Private Key rootCA.key" tôi gặp phải.
bánh rán

@donut - cảm ơn vì đã chỉ ra điều này - tôi đã sao chép dòng đó vì vậy tôi chắc chắn rằng nó đã gây ra sự cố mà bạn đã thấy ...
Brad park

openssl req -new -newkey rsa:2048 -sha256 -nodes -key device.key -subj "$SUBJECT" -out device.csrđang báo lỗi cho tôi "Lỗi mở PRivate Key device.key" Tôi nghĩ rằng lệnh này đáng lẽ phải tạo device.key, nhưng dường như nó đang cố đọc nó vì một lý do nào đó
Lenny

2
Tìm ra giải pháp (trong trường hợp có ai khác nhấn vào đây) là đổi -keythành -keyout...openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout device.key -subj "$SUBJECT" -out device.csr
Lenny

90

CẬP NHẬT 11/2017: Câu trả lời này có thể sẽ không hoạt động đối với hầu hết các phiên bản Chrome mới hơn.

CẬP NHẬT 02/2016: Hướng dẫn tốt hơn cho người dùng Mac có thể được tìm thấy ở đây .

  1. Trên trang bạn muốn thêm, bấm chuột phải vào biểu tượng khóa màu đỏ trong thanh địa chỉ:nhập mô tả hình ảnh ở đây

    1. Bấm vào tab có nhãn Kết nối , sau đó bấm Thông tin chứng chỉ

    2. Nhấp vào chi tiết tab, bấm vào nút Copy to File ... . Thao tác này sẽ mở Trình hướng dẫn xuất chứng chỉ, nhấp vào Tiếp theo để đến màn hình Xuất định dạng tệp .

    3. Chọn nhị phân được mã hóa DER X.509 (.CER) , nhấp vào Tiếp theo

    4. Nhấp vào Duyệt ... và lưu tệp vào máy tính của bạn. Đặt tên cho nó một cái gì đó mô tả. Nhấp vào Tiếp theo , sau đó nhấp vào Kết thúc .

    5. Mở cài đặt Chrome, cuộn xuống dưới cùng và nhấp vào Hiển thị cài đặt nâng cao ...

    6. Trong HTTPS / SSL , nhấp vào Quản lý chứng chỉ ...

    7. Nhấp vào Trusted Certification Authorities gốc tab, sau đó nhấp vào ... nhập nút. Điều này sẽ mở Trình hướng dẫn nhập chứng chỉ. Nhấn Next để đến màn hình File to Import .

    8. Bấm Duyệt ... và chọn tệp chứng chỉ bạn đã lưu trước đó, sau đó bấm Tiếp theo .

    9. Chọn Đặt tất cả các chứng chỉ trong cửa hàng sau . Cửa hàng được chọn phải là Cơ quan chứng nhận gốc đáng tin cậy . Nếu không, nhấp Duyệt ... và chọn nó. Nhấn Nextkết thúc

    10. Nhấp vào trên cảnh báo bảo mật.

    11. Khởi động lại Chrome.


2
@AJeneral Vâng, Chrome đã thay đổi một lần nữa. Các hướng dẫn trong bài viết này làm việc cho tôi gần đây.
kmgdev

2
Tùy chọn này không tồn tại trên Mac Chrome mới nhất kể từ ngày nhận xét này.
y3sh

1
@kgrote, Chrome không có cửa hàng chứng chỉ riêng. Tất cả những gì nó làm là thêm và xóa Windows. Như vậy, một cách tốt hơn là chỉ cần sử dụng certmgr.mscđể thêm và xóa certs.
Pacerier

1
Đã làm việc cho tôi, cảm ơn. Phải khởi động lại Chrome và quan trọng nhất là chứng chỉ của tôi đã hết hạn trước năm 2017. Công cụ SHA-1.
ioanb7

1
CHROME THAY ĐỔI YẾT QUẢ! Bây giờ là bước "Trong thanh địa chỉ, nhấp vào khóa nhỏ bằng X. Thao tác này sẽ hiển thị màn hình thông tin nhỏ." không hoạt động.
Bruno Bronosky

59

Nếu bạn đang sử dụng máy Mac và không thấy tab xuất hoặc cách lấy chứng chỉ, điều này hiệu quả với tôi:

  1. Nhấp vào khóa trước https: //
  2. Chuyển đến tab "Kết nối"
  3. Nhấp vào "Thông tin chứng chỉ"

    Bây giờ bạn sẽ thấy điều này: Tất nhiên thông tin khác nhau và thông tin của bạn nên được đánh dấu là đáng tin cậy (nếu không bạn có thể sẽ không ở đây)

  4. Kéo biểu tượng chứng chỉ nhỏ đó làm máy tính để bàn của bạn (hoặc bất cứ nơi nào).

  5. Nhấp đúp vào tệp .cer đã được tải xuống, tệp này sẽ nhập tệp đó vào móc khóa của bạn và mở Keychain Access vào danh sách chứng chỉ của bạn.

    Trong một số trường hợp, điều này là đủ và bây giờ bạn có thể làm mới trang.

    Nếu không thì:

  6. Nhấp đúp vào chứng chỉ mới được thêm vào.
  7. Trong phần thả xuống tin cậy, thay đổi tùy chọn "Khi sử dụng chứng chỉ này" thành "Luôn tin tưởng"

Bây giờ tải lại trang trong câu hỏi và nó sẽ được giải quyết vấn đề! Hi vọng điêu nay co ich.


Chỉnh sửa từ Wolph

Để làm điều này dễ dàng hơn một chút, bạn có thể sử dụng tập lệnh ( nguồn ) sau:

  1. Lưu lại như sau tập lệnh dạng whitelist_ssl_certificate.ssh:

    #!/usr/bin/env bash -e
    
    SERVERNAME=$(echo "$1" | sed -E -e 's/https?:\/\///' -e 's/\/.*//')
    echo "$SERVERNAME"
    
    if [[ "$SERVERNAME" =~ .*\..* ]]; then
        echo "Adding certificate for $SERVERNAME"
        echo -n | openssl s_client -connect $SERVERNAME:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | tee /tmp/$SERVERNAME.cert
        sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" /tmp/$SERVERNAME.cert
    else
        echo "Usage: $0 www.site.name"
        echo "http:// and such will be stripped automatically"
    fi
  2. Làm cho tập lệnh thực thi (từ trình bao):

    chmod +x whitelist_ssl_certificate.ssh
  3. Chạy tập lệnh cho tên miền bạn muốn (chỉ cần sao chép / dán toàn bộ url hoạt động):

    ./whitelist_ssl_certificate.ssh https://your_website/whatever

1
Cách tiếp cận này hiệu quả với tôi trên OS X Mavericks, không có tùy chọn Xuất nào có sẵn như được mô tả trong câu trả lời hàng đầu ở trên.
Kevin Leary

Công trình tuyệt vời. Khóa trước https vẫn bị bỏ qua, nhưng không sao vì không còn cửa sổ bật lên gây phiền nhiễu nữa.
nalply

Điều này làm việc cho tôi trên Mac Catalina. Cảm ơn! :)
Saurabh

58

CẬP NHẬT ngày 23 tháng 4 năm 20

Được đề xuất bởi Nhóm Chromium

https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins#TOC-Testing-Powerful-Features

Giải pháp siêu dễ dàng nhanh chóng

Có một cụm từ bỏ qua bí mật có thể được nhập vào trang lỗi để Chrome tiến hành mặc dù có lỗi bảo mật: thisisunafe (trong các phiên bản trước của Chrome, nhập badidea và thậm chí sớm hơn, nguy hiểm ). DO KHÔNG SỬ DỤNG này trừ khi bạn hiểu chính xác tại sao bạn cần nó!

Nguồn:

https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/

(LƯU Ý mà window.atob('dGhpc2lzdW5zYWZl')giải quyết thisisunsafe)

Phiên bản mới nhất của nguồn là @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resource/interstitial_large.jswindow.atobchức năng có thể được thực thi trong một bảng điều khiển JS.

Để biết lý do tại sao nhóm Chrome thay đổi cụm từ bỏ qua (lần đầu tiên):

https://bugs.chromium.org/p/chromium/issues/detail?id=581189

Nếu vẫn thất bại (Giải pháp số 1)

Để nhanh chóng thực hiện một lần nếu tùy chọn "Proceed Anyway" không có sẵn, cũng như cụm từ bỏ qua đang hoạt động, bản hack này hoạt động tốt:

  1. Cho phép lỗi chứng chỉ từ localhostbằng cách bật cờ này (lưu ý Chrome cần khởi động lại sau khi thay đổi giá trị cờ):

    chrome://flags/#allow-insecure-localhost

    (và trả lời bỏ phiếu https://stackoverflow.com/a/31900210/430128 bởi @Chris)

  2. Nếu trang web bạn muốn kết nối là localhost, bạn đã hoàn thành. Mặt khác, thiết lập đường hầm TCP để nghe trên cổng 8090 cục bộ và kết nối với broken-remote-site.comcổng 443, đảm bảo bạn đã socatcài đặt và chạy một cái gì đó như thế này trong cửa sổ đầu cuối:

    socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443

  3. Tới https: // localhost: 8090 trong trình duyệt của bạn.

Nếu vẫn thất bại (Giải pháp số 2)

Tương tự như "Nếu tất cả các cách khác đều thất bại (Giải pháp số 1)", ở đây chúng tôi định cấu hình proxy cho dịch vụ cục bộ của mình bằng ngrok . Vì bạn có thể truy cập các đường dẫn ngrok http qua TLS (trong trường hợp đó, nó bị chấm dứt bởi ngrok với chứng chỉ hợp lệ) hoặc qua điểm cuối không phải là TLS, trình duyệt sẽ không khiếu nại về chứng chỉ không hợp lệ.

Tải xuống và cài đặt ngrok và sau đó hiển thị thông qua ngrok.io:

ngrok http https://localhost

ngrok sẽ khởi động và cung cấp cho bạn một tên máy chủ mà bạn có thể kết nối và tất cả các yêu cầu sẽ được chuyển trở lại máy cục bộ của bạn.


10
Như đã nêu trên quora.com/ bào , một tùy chọn khác là nhấp vào bất cứ đâu trên trang và viết "badidea"
smihael

Bất cứ ai đang cố gắng sử dụng localhost với https cho nhân viên dịch vụ, điểm đầu tiên của If-all-fail đã làm việc với tôi trên chrome 60
ub

điều này vẫn sẽ coi chứng chỉ là không hợp lệ và khiến mật khẩu quản lý từ chối hoạt động
Ray Foss

34

Đối với một môi trường thử nghiệm

Bạn có thể sử dụng --ignore-certificate-errorslàm tham số dòng lệnh khi khởi chạy chrome (Hoạt động trên Phiên bản 28.0.1500.52 trên Ubuntu).

Điều này sẽ khiến nó bỏ qua các lỗi và kết nối mà không có cảnh báo. Nếu bạn đã có một phiên bản chrome đang chạy, bạn sẽ cần phải đóng phiên bản này trước khi khởi chạy lại từ dòng lệnh hoặc nó sẽ mở một cửa sổ mới nhưng bỏ qua các tham số.

Tôi cấu hình Intellij để khởi chạy chrome theo cách này khi thực hiện gỡ lỗi, vì các máy chủ thử nghiệm không bao giờ có chứng chỉ hợp lệ.

Tôi không khuyên bạn nên duyệt bình thường như thế này, vì kiểm tra chứng chỉ là một tính năng bảo mật quan trọng, nhưng điều này có thể hữu ích với một số người.


5
Nó hoạt động với tôi trong Windows 8! Tôi chỉ cần nhấp chuột phải vào phím tắt chrome> Thuộc tính> Đã thay đổi trường 'Target' như thế này (lưu ý rằng '--ignore-chứng chỉ-lỗi' nên được thêm vào sau trích dẫn và với khoảng trắng): "C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe "- lỗi chứng nhận-chứng nhận
mikhail-t

1
Điều này không trả lời câu hỏi, và nguy hiểm của nó. Câu hỏi đặt ra là làm cách nào để Chrome tin tưởng vào chứng chỉ máy chủ tự ký; không làm thế nào để bỏ qua các cảnh báo và lỗi.
jww

1
Đây là giải pháp duy nhất phù hợp với tôi trên Chrome (63.0.3239.108) với Windows 7 (64-bit). Liên quan đến bảo mật, tôi đã tạo biểu tượng đặc biệt trên máy tính để bàn mà tôi chỉ khởi chạy khi phát triển trên máy ảo cục bộ. Nhập chứng chỉ cục bộ tự ký, điều chỉnh chrome: // flags & HSTS domain không giúp được gì. Chrome chắc chắn nên giữ nút tốt cũ đó "Thêm ngoại lệ bảo mật" - nó sẽ giúp tôi tiết kiệm được 2 giờ vật lộn với các cài đặt vô dụng.
Lubosdz

Hướng dẫn này làm việc như một nét duyên dáng! youtube.com/watch?v=qoS4bLmstlk
Jonathan Martins

20

Như ai đó đã lưu ý, bạn cần khởi động lại TẤT CẢ Chrome, không chỉ các cửa sổ trình duyệt. Cách nhanh nhất để làm điều này là mở một tab để ...

chrome://restart


Chào! Chỉ muốn chỉ ra rằng đây là những gì đã sửa nó cho tôi. Tôi đã thêm một CA tùy chỉnh vào cửa hàng ủy thác, nó đã luôn làm việc cho tôi theo cách đó. Tôi đã thử Firefox và làm việc hoàn hảo nhưng không chrome. Cuối cùng, đó là vì có vẻ như bạn cần khởi động lại hoàn toàn chrome như bạn đã đề cập. Có thể Chrome tiếp tục sử dụng cùng một cửa hàng ủy thác miễn là các quy trình nền đó vẫn đang chạy.
Jose Cifuentes

20

WINDOWS THÁNG 6/2017 Windows Server 2012

Tôi đã trả lời @Brad park. Trên Windows, bạn nên nhập rootCA.pem trong cửa hàng ủy quyền chứng chỉ gốc đáng tin cậy.

Tôi đã làm các bước sau:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -newkey rsa:4096 -sha256 -days 1024 -out rootCA.pem
openssl req -new -newkey rsa:4096 -sha256 -nodes -keyout device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 2000 -sha256 -extfile v3.ext

Trong đó v3.ext là:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
IP.1 = 192.168.0.2
IP.2 = 127.0.0.1

Sau đó, trong trường hợp của tôi, tôi có một ứng dụng web tự lưu trữ, vì vậy tôi cần liên kết chứng chỉ với địa chỉ IP và cổng, chứng chỉ nên có trên cửa hàng MY với thông tin khóa riêng, vì vậy tôi đã xuất sang định dạng pfx.

openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt

Với bảng điều khiển mmc (Tệp / Thêm hoặc Xóa Snap-in / Chứng chỉ / Thêm / Tài khoản Computert / LocalComputer / OK) Tôi đã nhập tệp pfx trong Cửa hàng cá nhân.

Sau này tôi đã sử dụng lệnh này để liên kết chứng chỉ (bạn cũng có thể sử dụng công cụ HttpConfig):

netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}

certhash = Giấy chứng nhận Thumprint

appid = GUID (sự lựa chọn của bạn)

Đầu tiên tôi đã cố gắng nhập chứng chỉ "device.crt" trên Chứng chỉ gốc đáng tin cậy theo các cách khác nhau nhưng tôi vẫn nhận được cùng một lỗi:

nhập mô tả hình ảnh ở đây

Nhưng tôi nhận ra rằng tôi nên nhập chứng chỉ của quyền root chứ không phải chứng chỉ cho tên miền. Vì vậy, tôi đã sử dụng bảng điều khiển mmc (Tệp / Thêm hoặc Xóa Snap-in / Chứng chỉ / Thêm / Tài khoản Computert / LocalComputer / OK) Tôi đã nhập rootCA.pem trong cửa hàng ủy quyền chứng chỉ gốc đáng tin cậy.

nhập mô tả hình ảnh ở đây

Khởi động lại Chrome và et voilà nó hoạt động.

Với localhost:

nhập mô tả hình ảnh ở đây

Hoặc với địa chỉ IP:

nhập mô tả hình ảnh ở đây

Điều duy nhất tôi không thể đạt được là nó có mật mã lỗi thời (hình vuông màu đỏ trên hình). Trợ giúp được đánh giá cao về điểm này.

Với makecert, không thể thêm thông tin SAN. Với New-SelfSignCertert (Powershell), bạn có thể thêm thông tin SAN, nó cũng hoạt động.


2
Quan trọng: Chạy OpenSSL với tư cách quản trị viên.
Jose A

Đây là câu trả lời hay nhất và vẫn hoạt động cho Chrome [71.0.3578.98] kể từ tháng
1-2019

Wow nó đã hoạt động, cảm ơn rất nhiều (trên Chrome 75 - tháng 7 năm 2019). Bạn không cần netsh httpbước trừ khi bạn sử dụng máy chủ windows. Ngoài ra tôi không nghĩ cần phải xuất tệp cert sang pfx.

đã xác nhận hoạt động: Chrome 81 - tháng 5 năm 2020 - Windows 7
petrosmm

15
  1. Thêm chứng chỉ CA trong CA Store gốc đáng tin cậy.

  2. Chuyển đến chrome và kích hoạt cờ này!

chrome://flags/#allow-insecure-localhost

Cuối cùng, chỉ cần sử dụng tên miền * .me hoặc bất kỳ tên miền hợp lệ nào như * .com và * .net và duy trì chúng trong tệp máy chủ. Đối với các nhà phát triển địa phương của tôi, tôi sử dụng * .me hoặc * .com với tệp máy chủ được duy trì như sau:

  1. Thêm vào máy chủ. C: / windows / system32 / trình điều khiển / etc / hosts

    127.0.0.1 nextwebapp.me

Lưu ý: Nếu trình duyệt đã được mở khi thực hiện việc này, lỗi sẽ tiếp tục hiển thị. Vì vậy, vui lòng đóng trình duyệt và bắt đầu lại. Tốt hơn hết, hãy ẩn danh hoặc bắt đầu một phiên mới để có hiệu quả ngay lập tức.



Tôi chỉ thêm các tên miền được phép phát triển cục bộ, tức là các trang web * .me vào tệp máy chủ trong Windows. Mọi người thêm chứng chỉ nhưng đôi khi máy chủ không thể xác minh xác minh SSL ngay cả khi chứng chỉ được cài đặt đúng. Trong trường hợp đó, chúng tôi tạo ra một phiên mới. Tôi chỉ thêm những lời khuyên đó. Tôi đã đi qua cái hố thỏ này quá sâu nên tôi muốn chắc chắn rằng ai đó biết phải làm gì nếu cần thiết.
Ariel

14

Bạn có chắc chắn địa chỉ trang web đang được phục vụ giống như chứng chỉ không? Tôi đã gặp vấn đề tương tự với Chrome và một chứng chỉ tự ký, nhưng cuối cùng tôi thấy nó cực kỳ kén chọn về việc xác thực tên miền trên chứng chỉ (như nó phải vậy).

Chrome không có cửa hàng chứng nhận riêng và sử dụng riêng của Window. Tuy nhiên, Chrome không cung cấp cách nào để nhập certs vào cửa hàng, vì vậy bạn nên thêm chúng qua IE.

Cài đặt Chứng chỉ trong Google Chrome

Cài đặt chứng chỉ trong Internet Explorer

Ngoài ra, hãy xem điều này cho một vài cách tiếp cận khác nhau để tạo các certs tự ký (Tôi giả sử bạn đang sử dụng IIS như bạn đã đề cập).

Cách tạo chứng chỉ tự ký trong IIS 7


Trang web được đề cập là localhost và CN của chứng chỉ là "localhost". Có, tôi đã cài đặt chứng chỉ trong kho chứng chỉ của Windows. Cả IE và Chrome đều phàn nàn về chứng chỉ.
pjohansson

Không chắc chắn nếu bạn đang sử dụng IIS hoặc Apache, nhưng hãy kiểm tra liên kết bổ sung mà tôi vừa thêm vào để tạo các certs tự ký cho IIS.
Ira Rainey

Bởi vì cực kỳ kén chọn về việc xác nhận tên miền trên phần cert : có ai biết thêm về điều đó không? Tôi gặp sự cố (đó là năm 2019) trên Android 9 với chứng chỉ gốc, được Google Chrome cho là không an toàn. Nó là OK cho FF và trên máy tính để bàn.
BairDev

7

Tôi đã đi vào quá trình sử dụng những gì bjnord đề xuất đó là: Google Chrome, Mac OS X và Chứng chỉ SSL tự ký

Những gì được hiển thị trong blog đã không hoạt động.

Tuy nhiên, một trong những bình luận của blog là vàng:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt

Bạn sẽ cần theo dõi blog về cách lấy tệp cert, sau đó bạn có thể sử dụng lệnh trên và sẽ rất tốt để đi.


7

GUI để quản lý các SSL SSL trên Chromium trên Linux KHÔNG hoạt động đúng với tôi. Tuy nhiên, tài liệu của họ đã đưa ra câu trả lời đúng. Thủ thuật là chạy lệnh bên dưới để nhập chứng chỉ SSL tự ký. Chỉ cần cập nhật tên của <certificate-nickname>certificate-filename.cer, sau đó khởi động lại crom / chrome.

Từ Tài liệu:

Trên Linux, Chromium sử dụng DB chia sẻ NSS. Nếu trình quản lý tích hợp không hoạt động cho bạn thì bạn có thể định cấu hình chứng chỉ bằng các công cụ dòng lệnh NSS.

Lấy dụng cụ

  • Debian / Ubuntu: sudo apt-get install libnss3-tools

  • Fedora: su -c "yum install nss-tools"

  • Gentoo: su -c "echo 'dev-libs/nss utils' >> /etc/portage/package.use && emerge dev-libs/nss"(Bạn cần khởi chạy tất cả các lệnh bên dưới với nsstiền tố, ví dụ : nsscertutil.) Opensuse:sudo zypper install mozilla-nss-tools

Để tin tưởng một chứng chỉ máy chủ tự ký, chúng ta nên sử dụng

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <certificate-nickname> -i certificate-filename.cer

Liệt kê tất cả các chứng chỉ

certutil -d sql:$HOME/.pki/nssdb -L

TRUSTARGS là ba chuỗi gồm 0 hoặc nhiều ký tự chữ cái, được phân tách bằng dấu phẩy. Họ xác định cách chứng chỉ nên được tin cậy cho SSL, email và ký đối tượng và được giải thích trong tài liệu certutil hoặc bài đăng trên blog của Meena trên cờ tin cậy.

Thêm chứng chỉ cá nhân và khóa riêng để xác thực ứng dụng khách SSL Sử dụng lệnh:

pk12util -d sql:$HOME/.pki/nssdb -i PKCS12_file.p12

để nhập chứng chỉ cá nhân và khóa riêng được lưu trữ trong tệp PKCS # 12. TRUSTARGS của chứng chỉ cá nhân sẽ được đặt thành Đá u, u, u.

Xóa chứng chỉ certutil -d sql:$HOME/.pki/nssdb -D -n <certificate nickname>

Trích từ: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_man quản lý.md


7

Filippo Valsorda đã viết một công cụ đa nền tảng mkcert, để làm điều này cho rất nhiều cửa hàng tin cậy. Tôi cho rằng anh ấy đã viết nó vì lý do tương tự rằng có rất nhiều câu trả lời cho câu hỏi này: thật khó để làm điều "đúng" cho các chứng chỉ SubjectAltName được ký bởi một CA gốc đáng tin cậy.

mkcert được bao gồm trong các hệ thống quản lý gói chính cho Windows, macOS và một số hương vị Linux.

mkcert

mkcertlà một công cụ đơn giản để làm chứng chỉ phát triển đáng tin cậy tại địa phương. Nó không yêu cầu cấu hình.

$ mkcert -install
Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" 💥
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊

$ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
Using the local CA at "/Users/filippo/Library/Application Support/mkcert" ✨

Created a new certificate valid for the following names 📜
 - "example.com"
 - "*.example.com"
 - "example.test"
 - "localhost"
 - "127.0.0.1"
 - "::1"

The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅

6

Khi nhấp vào biểu tượng khóa nhỏ bị gạch bỏ bên cạnh URL, bạn sẽ nhận được một hộp trông như thế này:

nhập mô tả hình ảnh ở đây

Sau khi nhấp vào liên kết Thông tin chứng chỉ , bạn sẽ thấy hộp thoại sau:

nhập mô tả hình ảnh ở đây

Nó cho bạn biết cửa hàng chứng chỉ nào là đúng, đó là cửa hàng ủy quyền chứng nhận gốc đáng tin cậy .

Bạn có thể sử dụng một trong các phương pháp được nêu trong các câu trả lời khác để thêm chứng chỉ vào cửa hàng đó hoặc sử dụng:

certutil -addstore -user "ROOT" cert.pem
  • ROOT là tên nội bộ của cửa hàng chứng chỉ được đề cập trước đó.
  • cert.pem là tên của chứng chỉ tự ký của bạn.

1
certutil -addstore -user "ROOT" cert.pemlà Windows?
Pacerier

1
@Pacerier: Chính xác, nó dành cho Windows.
Der Hochstapler 6/11/2015

Bạn đã có nó trong đó Trusted Root Certification Authoritiesnhưng vẫn còn vấn đề: imgur.com/a/mjlglVz imgur.com/a/n8BFH5S Windows 10, chrome 78
tryHard 13/11/19

6

Điều này làm việc cho tôi. Xem: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-elf-sign-ssl-certert/#.Vcy8_ZNVhBc

Trong thanh địa chỉ, nhấp vào khóa nhỏ bằng X. Thao tác này sẽ hiển thị màn hình thông tin nhỏ. Nhấp vào nút có nội dung "Thông tin chứng chỉ."

Nhấp và kéo hình ảnh vào máy tính để bàn của bạn. Nó trông giống như một chứng chỉ nhỏ.

Bấm đúp vào nó. Điều này sẽ mang đến tiện ích Keychain Access. Nhập mật khẩu của bạn để mở khóa nó.

Hãy chắc chắn rằng bạn thêm chứng chỉ vào móc khóa Hệ thống, không phải móc khóa đăng nhập. Nhấp vào "Luôn tin tưởng", mặc dù điều này dường như không làm gì cả.

Sau khi được thêm vào, bấm đúp vào nó. Bạn có thể phải xác thực một lần nữa.

Mở rộng phần "Tin cậy".

"Khi sử dụng chứng chỉ này," được đặt thành "Luôn tin tưởng"


6

Tôi đã thử tất cả mọi thứ và những gì làm cho nó hoạt động: Khi nhập, chọn đúng danh mục, cụ thể là Cơ quan cấp chứng chỉ gốc đáng tin cậy :

(xin lỗi đó là tiếng Đức, nhưng chỉ cần làm theo hình ảnh)

nhập mô tả hình ảnh ở đây


6
mkdir CA
openssl genrsa -aes256 -out CA/rootCA.key 4096
openssl req -x509 -new -nodes -key CA/rootCA.key -sha256 -days 1024 -out CA/rootCA.crt

openssl req -new -nodes -keyout example.com.key -out domain.csr -days 3650 -subj "/C=US/L=Some/O=Acme, Inc./CN=example.com"
openssl x509 -req -days 3650 -sha256 -in domain.csr -CA CA/rootCA.crt -CAkey CA/rootCA.key -CAcreateserial -out example.com.crt -extensions v3_ca -extfile <(
cat <<-EOF
[ v3_ca ]
subjectAltName = DNS:example.com
EOF
)

1
Đây là người duy nhất làm việc cho tôi với chrome 77. Cảm ơn bạn đã tiết kiệm ngày của tôi.
Romain

Làm thế nào để một người sử dụng các tập tin được tạo ra? Tôi hiểu cách sử dụng tệp .crt và .key nhưng tệp .csr dùng để làm gì? Và làm cách nào để sử dụng tập tin rootCA. *? Vui lòng mở rộng câu trả lời của bạn ...
Chiwda

Cảm ơn bạn rất nhiều, bạn vừa tiết kiệm ngày của tôi!
dodancs

6

Bài đăng này đã tràn ngập các phản hồi, nhưng tôi đã tạo một tập lệnh bash dựa trên một số câu trả lời khác để giúp tạo chứng chỉ TLS tự ký hợp lệ trong Chrome (Đã kiểm tra Chrome 65.x) dễ dàng hơn . Hy vọng nó hữu ích cho người khác.

kịch bản bash tự ký

Sau khi bạn cài đặt ( và tin tưởng ) chứng chỉ, đừng quên khởi động lại Chrome ( chrome://restart)


Một công cụ khác đáng để kiểm tra là cfsslbộ công cụ của CloudFlare :

cfssl


6

Để tạo chứng chỉ tự ký trong Windows mà Chrome v58 trở lên sẽ tin tưởng, hãy khởi chạy Powershell với các đặc quyền và loại nâng cao:

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject "fruity.local" -DnsName "fruity.local", "*.fruity.local" -FriendlyName "FruityCert" -NotAfter (Get-Date).AddYears(10)
#notes: 
#    -subject "*.fruity.local" = Sets the string subject name to the wildcard *.fruity.local
#    -DnsName "fruity.local", "*.fruity.local"
#         ^ Sets the subject alternative name to fruity.local, *.fruity.local. (Required by Chrome v58 and later)
#    -NotAfter (Get-Date).AddYears(10) = make the certificate last 10 years. Note: only works from Windows Server 2016 / Windows 10 onwards!!

Khi bạn thực hiện việc này, chứng chỉ sẽ được lưu vào chứng chỉ Máy tính cục bộ theo Cá nhân \ Chứng chỉ cửa hàng .

Bạn muốn sao chép chứng chỉ này vào Cơ quan chứng nhận gốc đáng tin cậy \ Chứng chỉ cửa hàng .

Một cách để làm điều này: nhấp vào nút bắt đầu của Windows và nhập certlm.msc. Sau đó kéo và thả chứng chỉ mới được tạo vào cửa hàng ủy quyền chứng chỉ gốc đáng tin cậy \ Chứng chỉ theo ảnh chụp màn hình bên dưới. nhập mô tả hình ảnh ở đây


Làm thế nào để làm điều này trong mac xin vui lòng? cảm ơn :)
Artanis Zeratul

@mpowrie. Đã tạo ra cái này, làm cách nào để liên kết nó với máy chủ web Apache? Trên máy chủ localhost.
Ifedi Okonkwo

Ifedi Okonkwo: Tôi không chắc chắn với máy chủ web Apache, nhưng với IIS, bạn thêm một ràng buộc trang web loại https, bao gồm tên máy chủ đủ điều kiện và chọn chứng chỉ SSL.
mpowrie

Công việc này như một cái duyên vậy. Tôi sẽ nói rằng bạn sẽ cần thực hiện thêm một bước nếu bạn muốn gán chứng chỉ đó làm ràng buộc ... và chứng chỉ đó cũng cần phải có trong Chứng chỉ cá nhân>. Kéo và thả, vì một số lý do, thực sự đã loại bỏ nó khỏi các certs cá nhân và đặt nó vào Certs đáng tin cậy. Vì vậy, hãy chắc chắn rằng bạn sao chép và dán nó.
StephenPAdams

5

Sửa lỗi localhost SSL / HTTPS trên mac / osx:

  1. Nhấp vào khóa màu đỏ với chữ thập trong thanh địa chỉ của bạn khi cố gắng mở môi trường https localhost của bạn. Sẽ mở một cửa sổ với một số thông tin về chứng chỉ.

  2. Nhấp vào cửa sổ thông tin "Chi tiết"

  3. Các công cụ dành cho Nhà phát triển chrome mở trên tab 'Bảo mật'. Bấm vào Xem Chứng chỉ . Hình ảnh chứng chỉ
  4. Thêm nó vào móc khóa 'Hệ thống' của bạn (không phải là móc khóa 'đăng nhập' được chọn theo mặc định).

  5. Mở móc khóa của bạn (một lần nữa) và tìm chứng chỉ. Nhấp vào nó và đảm bảo bạn "Tin tưởng" tất cả.

  6. Khởi động lại chrome và nó sẽ hoạt động.


Giao diện đồ họa ngu ngốc có thể không chấp nhận chứng chỉ trong MacoOS 10.14.5, nhưng bạn có thể nhập nó với security import filename.pem -k ~/Library/Keychains/login.keychain. Đồ họa có lỗi -25294
khiển thuyền

5

Tôi đã gặp vấn đề tương tự: Tôi đã cài đặt chứng chỉ vào cửa hàng ủy quyền gốc đáng tin cậy của Windows và Chrome vẫn từ chối chứng chỉ, với lỗi ERR_CERT_COMMON_NAME_INVALID. Lưu ý rằng khi chứng chỉ không được cài đặt đúng cách trong cửa hàng, lỗi là ERR_CERT_AUTHORITY_INVALID.

Như được gợi ý bởi tên của lỗi, nhận xét nàycâu hỏi này , vấn đề nằm ở tên miền được khai báo trong chứng chỉ. Khi được nhắc về "Tên chung" trong khi tạo chứng chỉ, tôi phải nhập tên miền tôi đang sử dụng để truy cập trang web ( localhosttrong trường hợp của tôi). Tôi đã khởi động lại Chrome bằng cách sử dụng chrome://restartvà cuối cùng nó cũng hài lòng với chứng chỉ mới này.


Tôi cũng đang sử dụng localhost nhưng chrome không hài lòng về nó imgur.com/a/mjlglVz Windows 10, Chrome 78. Tôi đã làm theo hướng dẫn từ đây: stackoverflow.com/a/44398368/4983983 Tôi truy cập trang qua localhost
thử

sử dụng tên chung "localhost" gần như đã hoạt động, và cuối cùng nó đã hoạt động khi tôi cũng khởi chạy chrome với tùy chọn--allow-insecure-localhost
pestophagous

5

Kể từ Chrome 58+, tôi bắt đầu gặp lỗi chứng chỉ trên macOS do thiếu SAN. Dưới đây là cách lấy lại khóa màu xanh lục trên thanh địa chỉ.

  1. Tạo chứng chỉ mới bằng lệnh sau:

    openssl req \
      -newkey rsa:2048 \
      -x509 \
      -nodes \
      -keyout server.key \
      -new \
      -out server.crt \
      -subj /CN=*.domain.dev \
      -reqexts SAN \
      -extensions SAN \
      -config <(cat /System/Library/OpenSSL/openssl.cnf \
          <(printf '[SAN]\nsubjectAltName=DNS:*.domain.dev')) \
      -sha256 \
      -days 720
  2. Nhập server.crtvào KeyChain của bạn, sau đó nhấp đúp vào chứng chỉ, mở rộng Tin cậy và chọn Luôn tin cậy

Làm mới trang https://domain.dev trong Google Chrome, vì vậy khóa màu xanh lá cây đã trở lại.


Điều này hoạt động cho tên miền phụ api.domain.devnhưng tôi vẫn có một trang cảnh báo trên domain.dev: This server could not prove that it is domain.dev; its security certificate is from *.domain.dev. This may be caused by a misconfiguration or an attacker intercepting your connection.Bất kỳ ý tưởng?
François Romain

5

Đối với Chrome trên MacOS, nếu bạn đã chuẩn bị chứng chỉ:

  • Thoát khỏi Chrome ( cmd+Q ).
  • Bắt đầu ứng dụng Keychain Access và mở danh mục "Chứng chỉ".
  • Kéo tệp chứng chỉ của bạn vào cửa sổ Keychain Access và nhập mật khẩu cho tệp chứng chỉ.
  • Nhấp đúp chuột vào chứng chỉ của bạn và mở ra danh sách "Tin cậy".
    • Trong hàng "Khi sử dụng chứng chỉ này", chọn "Luôn tin tưởng".
    • Đóng công cụ này và nhập mật khẩu của bạn.
  • Bắt đầu Chrome và xóa tất cả bộ nhớ cache.
  • Kiểm tra xem mọi thứ đều ổn.

5

Cho phép localhost không an toàn hoạt động tốt thông qua phương thức này chrome: // flags / # allow-insecure-localhost

Chỉ cần bạn tạo tên máy chủ phát triển của mình thành xxx.localhost.

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.