자체 서명 로컬 호스트 인증서를 수락하도록 Chrome 받기


1207

localhost CN에 대한 자체 서명 SSL 인증서를 작성했습니다. Firefox는 예상대로이 인증서에 대해 처음 불평 한 후에이 인증서를 수락합니다. 그러나 Chrome 및 IE는 신뢰할 수있는 루트 아래의 시스템 인증서 저장소에 인증서를 추가 한 후에도이를 수락하지 않습니다. Chrome의 HTTPS 팝업에서 "인증서 정보보기"를 클릭하면 인증서가 올바르게 설치된 것으로 표시되지만 인증서를 신뢰할 수 없다고 주장합니다.

Chrome에서 인증서를 수락하고 이에 대한 불만을 중지 시키려면 어떻게해야하나요?


13
Firefox가 처음에 Firefox에 대해 불평한다고 말하면 인증서 예외를 추가하라는 메시지가 표시됩니까? 인증서가 올바르게 설치된 경우에는 발생하지 않습니다. 세 브라우저가 모두 불만을 표시하는 것으로 들리지만 Firefox에서는 불만을 취소 할 수 있습니다. 구체적인 답변이 없기 때문에 이것을 주석으로 게시하고 있지만 정확히이 작업을 수행했으며 세 브라우저 모두에서 제대로 작동합니다. 먼저 IE에서 작동하도록 시도한 다음 다른 두 가지에 대해 걱정하는 것이 좋습니다. 더 이상 도와 줄 수 없어서 미안 해요!
starskythehutch

1
DNS 이름 표시 방법을 포함하여 올바른 형식의 인증서를 만들어야합니다. OpenSSL은 브라우저를 기본적으로 만족시키는 방식으로 제공하지 않습니다. openssl을 사용하여 자체 서명 된 인증서를 작성하는 방법을 참조하십시오 . .
jww

4
Firefox는 시스템 인증서 저장소를 사용 하지 않습니다 .
curiousguy

4
인증서 서명에 SHA-1을 사용하는 경우 사용자 지정 인증서를 성공적으로 추가 할 수 있어도 최신 버전의 Chrome (57 년경)에 경고가 표시됩니다 . 어쨌든, 개발자 도구의 "보안"패널은 문제가 무엇인지 더 구체적으로 말할 것 net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM입니다.
SeldomNeedy

2
개발자 친화적이지 않기 때문에 개발 목적으로 Chrome 사용을 중단했습니다. 보통 이런 상황에 처한 사람은 자신이하는 일을 알고 있습니다. 고맙지 만 고마워요 Chrome에 불만이 많았습니다.
GTodorov

답변:


66

2020-05-22 : 6 개의 쉘 명령 사용 하면이 작업을 수행 할 수 있습니다.

제발 브라우저의 보안 설정을 변경하지 마십시오.

다음 코드를 사용하면 (1) 자체 CA가되고 (2) SSL 인증서를 CA로 서명 할 수 있습니다. (3) 그런 다음 서버에 들어가는 SSL 인증서가 아닌 CA 인증서를 Chrome / Chromium으로 가져옵니다. (예, 이것은 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

요약하자면:

  1. CA가 되십시오
  2. CA 키를 사용하여 인증서 서명
  3. myCA.pemChrome 설정에서 기관으로 가져 오기 (설정> 인증서 관리> 기관> 가져 오기)
  4. .crt서버 에서 파일을 사용하십시오.

추가 단계 (Mac의 경우) :

  1. "파일> 파일 가져 오기"에서 CA 인증서를 가져온 다음 목록에서 찾아서 마우스 오른쪽 단추를 클릭하고 "> 신뢰"를 펼친 후 "항상"을 선택하십시오.
  2. extendedKeyUsage=serverAuth,clientAuth아래 basicConstraints=CA:FALSE에 추가 하고 "CommonName"을 $NAME설정을 요청할 때 와 동일하게 설정하십시오.

당신은 당신의 작업을 확인할 수 있습니다

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

2
@maverick 브라우저 및 운영 체제에는 신뢰할 수있는 제한된 수의 CA가 제공됩니다. 누구나 CA가 될 수는 있지만 누구나 인증서를 신뢰하도록하려면 수동으로 인증서를 신뢰할 수있는 CA로 추가해야합니다 (수동으로 인증서를 가져올 때 Chrome에 지시 한대로).
JellicleCat

2
큰! 나 같은 맥 사용자를위한 두 발언 : 마지막 줄에서 사용하는 -days 825대신 -days 1825에 의한 superuser.com/questions/1492643/... , 그리고 그것의 가치는 키 체인 접근에 루트 인증서를 가져올 것을 지적, 당신은뿐만 아니라 파일 "에 필요 > 파일 가져 오기 '를 클릭 한 다음 목록에서 파일을 찾으려면 마우스 오른쪽 단추로 클릭하고 "> 신뢰"를 펼친 후 "항상"을 선택하십시오.
michielbdejong

2
로컬 dev 서버 의 CRT 파일 대신 PEM 파일 이 필요한 경우 걱정하지 마십시오. .crt.csr 파일을 결합 하여 .pem 파일 로 저장하면 좋습니다.
Kerem Baydoğan

1
마지막으로 작동합니다! 이 답변에 대한 BRAVO. myCA.pem을 Chrome 또는 Firefox에로드하는 것을 잊지 마십시오 (설정> 인증서 관리> 기관> 가져 오기)
Fryser wow

3
IP 기반 LAN 서버에서 DNS.1을 IP.1로 변경했습니다. 효과가있다. 감사.
dw1

764

의 경우 localhost에만 해당 :

크롬에 붙여 넣기 만하면됩니다.

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

localhost에서로드 된 리소스에 대해 유효하지 않은 인증서 허용

를 클릭하십시오 Enable.


3
경고뿐만 아니라 캐시도 비활성화합니다! bugs.chromium.org/p/chromium/issues/detail?id=103875
휴고 우드

4
이하지 않습니다 작업 당신은하지만, 아주 깨끗하고, 그렇지 않으면 (스위치 예에 대한 정체성에) 시크릿 모드에서 크롬을 사용하는 경우
baywet

5
이것은-성가신 빨간색 Not Secure 메시지를 참을 수 있다면. 그렇지 않으면 몇 시간의 신비한 openssl 주문이 Chrome의 내부 인증 관리자를 처리하려고합니다.
timbo

10
이 답변이 왜 투표되었는지 모르겠지만 유효하지 않은 인증서와 자체 서명 된 인증서간에 차이가 있습니다. 문제는 자체 서명 인증서에 관한 것입니다.
Mehdi

2
전혀 나를 위해 일하지 않았다. 이 답변에 의해 설명 된대로 무엇 나를 위해 일한 것은 subjectaltname에 포함하여 자체 서명 된 인증서를 생성했다 : stackoverflow.com/a/42917227/2873507
빅 Seedoubleyew

507

이것은 나를 위해 일했다 :

  1. Chrome을 사용하여 HTTPS를 통해 서버의 페이지를 방문하고 빨간색 경고 페이지를 계속지나갑니다 (아직 수행하지 않은 경우).
  2. 을 엽니 다 Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates.
  3. Authorities탭을 클릭하고 아래로 스크롤하여 인증서에 부여한 조직 이름 아래에서 인증서를 찾으십시오.
  4. 그것을 선택하고 편집을 클릭하십시오 ( 참고 : 최신 버전의 Chrome에서는 버튼이 이제 "편집"대신 "고급"입니다). 모든 상자를 체크하고 확인을 클릭하십시오. Chrome을 다시 시작해야 할 수도 있습니다.

당신은 지금 당신의 페이지에 좋은 녹색 자물쇠를 얻을 것입니다.

편집 : 새 컴퓨터 에서이 작업을 다시 시도했지만 빨간색 신뢰할 수없는 인증서 페이지에서 계속해서 인증서가 인증서 관리 창에 나타나지 않았습니다. 나는 다음을 수행해야했다.

  1. 신뢰할 수없는 인증서가있는 페이지 ( https://빨간색으로 표시됨)에서 잠금> 인증서 정보를 클릭하십시오. 참고 : 최신 버전의 크롬에서는을 열고을 Developer Tools > Security선택해야 View certificate합니다.
  2. 를 클릭하십시오 Details tab > Export. PKCS #7, single certificate파일 형식으로 선택하십시오 .
  3. 그런 다음 원래 지침에 따라 인증서 관리 페이지로 이동하십시오. 을 클릭하고 Authorities tab > Import인증서를 내 보낸 파일 을 선택 하고 파일 유형 으로 선택하십시오PKCS #7, single certificate .
  4. 인증 저장소에 프롬프트가 표시되면 신뢰할 수있는 루트 인증 기관을 선택하십시오.
  5. 모든 상자를 체크하고 확인을 클릭하십시오. Chrome을 다시 시작하십시오.

143
나는 이것을 리눅스 머신에서 시도했지만 xxx.xxx.com : 인증 기관이 아니기 때문에 가져 오기에 실패했다고 말했다.
matt

15
감사합니다 @kellen .. 그러나 Chrome 버전 29.0.1547.57 베타 버전을 사용하면 인증서 정보에 "내보내기"옵션이없는 것 같습니다. 즉, "세부 사항" 섹션이 있지만 탭 형식이 아닙니다. 축소 / 확장 가능 블록으로 나타납니다. i.imgur.com/dDmNEIh.png
캐벌 케이드

20
Chrome 37에는 Export더 이상 유용한 설명 버튼이 없습니다 Copy to file. 멋진 버튼 으로 대체 된 것 같습니다 . '수출'이 유지되지 않은 이유는 마음이
흔들리는 것입니다.

13
@Jakobud, 인증서 기호를 데스크탑이나 다른 것으로 드래그하면 내보내집니다. 그러나 나머지 답변은 내가 말할 수있는 한 OS X (Yosemite)에서는 작동하지 않습니다 (Chrome 39).
db

33
Chrome 56부터 Windows에서 SSL 인증서 설정에 액세스하려면 개발자 도구 (CTRL + SHIFT + i)를 사용해야하고 "보안"탭으로 이동하여 "인증서보기"버튼을 클릭하십시오.
void.pointer

167

CHROME 58+ 용 업데이트 (2017-04-19 릴리스)

Chrome 58부터는 호스트 만 사용하는 기능 commonName 이 제거되었습니다 . 이제 인증서를 사용 subjectAltName하여 호스트를 식별 해야합니다 . 자세한 내용은 여기버그 추적기는 여기를 참조 하십시오 . 과거에는 subjectAltName다중 호스트 인증서에만 사용 되었기 때문에 일부 내부 CA 도구에는 포함되지 않았습니다.

과거에 자체 서명 인증서가 제대로 작동 했지만 Chrome 58에서 갑자기 오류가 발생하기 시작한 이유입니다.

따라서 자체 서명 된 인증서 (또는 자체 서명 된 CA에서 서명 한 인증서)를 생성하기 위해 사용하는 모든 방법에 대해 서버의 인증서 에 단일 호스트 용인 경우에도subjectAltName 적절한 DNS및 / 또는 IP항목 / 항목이 포함 되어 있는지 확인하십시오. .

openssl의 경우 이는 OpenSSL 구성 ( /etc/ssl/openssl.cnfUbuntu의)이 단일 호스트에 대해 다음과 유사해야 함을 의미 합니다 .

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

또는 여러 호스트의 경우 :

[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

Chrome의 인증서 뷰어 (F12에서 "보안"탭으로 이동)에서 다음 Extensions과 같이 표시 됩니다 Certificate Subject Alternative Name.

크롬 인증서 뷰어


12
Chrome 58 이상 업데이트에 대해 게시 해 주셔서 감사합니다. Windows에 SAN을 포함하는 자체 서명 인증서를 작성하려는 사람들에게는 쉬운 방법 중 하나는 New-SelfSignedCertificate PowerShell 커맨드 렛을 사용하는 것입니다. New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My
DanO

3
@DanO 감사합니다! 다른 해결 방법 중 어느 것도 Win10에서 나를 위해 일하지 않았습니다. 최소한 Powershell이 ​​유효한 인증서를 생성한다는 사실을 알고 반갑습니다!
Brian Donahue

1
Chrome 58 이상용 Reddit에서 솔루션을 찾았으며 작동합니다! 관리자 명령 프롬프트에서 : 레지 추가 HKLM \ SOFTWARE \ 정책 \ 구글 \ 크롬 / V의 EnableCommonNameFallbackForLocalAnchors / t REG_DWORD / d를 1
IrfanClemson

3
Linux에서 정책을 작성하려면 /etc/opt/chrome/policies/managed/EnableCommonNameFallbackForLocalAnchors.json다음 내용 으로 정책 파일을 작성해야합니다 . { "EnableCommonNameFallbackForLocalAnchors": true }
seanf

5
"(보안으로 이동 한 크롬의 인증서 뷰어", "F12 아래 탭) 당신은 아래에 나열한다 ExtensionsCertificate Subject Alternative Name". F12 개발 도구 (Chrome 62)에서 보안 탭을 표시 할 때 "확장 프로그램"섹션이 표시되지 않습니다. 다른 곳으로 옮겼습니까?
Thunderforge

142

Mac에서는 키 체인 액세스 유틸리티를 사용하여 자체 서명 된 인증서를 시스템 키 체인에 추가하면 Chrome에서이를 승인합니다. 단계별 지침을 여기에서 찾았습니다.

Chrome, Mac OS X 및 자체 서명 SSL 인증서

원래:

  1. X로 자물쇠 아이콘을 두 번 클릭하고 인증서 아이콘을 바탕 화면으로 끌어다 놓습니다.
  2. 이 파일을여십시오 (.cer 확장자로 끝나는). 그러면 인증서를 승인 할 수있는 키 체인 응용 프로그램이 열립니다.

12
중요하게이 기능을 적용하려면 Chrome을 다시 시작해야 할 수 있습니다.
Xiong Chiamiov

10
인증서 기본 설정을 편집하고 SSL을 수동으로 신뢰해야했습니다.
NeDark

1
이것은 Yosemite, 10.10.5, Chrome 버전 46.0.2490.80 (64 비트)에서 나를 위해 일했습니다. 감사!
romellem

2
El Capitan에서 작업했으며 다시 시작할 필요가 없습니다. 인증서를 추가하고 클릭하여 신뢰 드롭 다운을 펼치고 Always TrustSSL 섹션으로 설정했습니다 . @NeDark가 말한 기본적으로.
Tom

1
데스크톱에서 인증서를 키 체인으로 끌어다 놓은 다음 승인을 수행해야했습니다.
jmq

129

페이지의 아무 곳이나 클릭하고 BYPASS_SEQUENCE를 입력하십시오.

" thisisunsafe"은 Chrome 버전 65의 BYPASS_SEQUENCE입니다.

" badidea"Chrome 버전 62-64.

" danger"은 이전 버전의 Chrome에서 작동했습니다.

입력 필드를 찾을 필요없이 입력하십시오. 이상하게 느껴지지만 작동합니다.

Mac High Sierra에서 시도했습니다.

다시 변경되었는지 다시 확인하려면 최신 크롬 소스 코드 로 이동하십시오.

BYPASS_SEQUENCE를 찾으려면 현재 다음과 같습니다.

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

이제 위장이되어 있지만 실제 BYPASS_SEQUENCE를 보려면 브라우저 콘솔에서 다음 줄을 실행할 수 있습니다.

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

6
wtf, 이것은 나를 위해 일해 주셔서 감사합니다 ubuntu 16.04 63.0.3239.84
gries December

8
이 코드는 새 버전 이후로 변경되었습니다. 새로운 문구는thisisunsafe
Java Guy

6
Windows 10의 Chrome 65에서 입력 thisisunsafe하면이 사이트를 예외에 추가하는 데 영향을주는 것 같습니다. (주소 표시 줄에 여전히 "안전하지 않음"이 빨간색으로 표시됩니다.)
Ryan

2
이 작동되지만 페이지를 탐색 할 경우 단지 첫 번째로드를 위해, 당신은 다시 bupass_squence 입력 할 필요가
talsibony

"thisisunsafe"BYPASS_SEQUENCE는이 페이지에서 Mac Chrome 72에서 나를 위해 일한 유일한 것입니다. 자체 서명 한 인증서를 만들 필요가 없습니다 ...!
Jono

95

리눅스

Linux를 사용하는 경우이 공식 위키 페이지를 따라갈 수도 있습니다.

원래:

  • X가있는 자물쇠 아이콘을 클릭하고
  • 인증서 정보를 선택하십시오
  • 세부 사항 탭으로 이동
  • 내보내기 ...를 클릭하십시오 (파일로 저장).

이제 다음 명령은 인증서를 추가합니다 (여기서 YOUR_FILE은 내 보낸 파일입니다).

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

모든 인증서를 나열하려면 다음 명령을 실행하십시오.

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

그래도 작동하지 않으면이 버그의 영향을받을 수 있습니다. 문제 55050 : Ubuntu SSL 오류 8179

추신 libnss3-tools위의 명령을 사용하기 전에를 가지고 있는지 확인하십시오 .

없는 경우 다음 방법으로 설치하십시오.

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

보너스로 다음과 같은 편리한 스크립트를 사용할 수 있습니다.

$ 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'

용법:

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

문제 해결

  • --auto-ssl-client-auth매개 변수를 사용 하여 Chrome 실행

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


훌륭합니다. 나는 당신의 대본을 좋아합니다. 그래도 QUIT가 필요하지 않으며 (어쨌든 QUIT와 같은 HTTP 명령은 없습니다) sed가 필요하지 않습니다 .ns 도구는 BEGIN과 END CERT 사이의 인증서를 필터링 할 수 있습니다. 는 그래서 download_cert.sh: 단순히이 될 수 있습니다echo | openssl s_client -connect $1:443
폴 토비아스

다른 옵션을 시도했지만 현재이 옵션은 Linux 용 Chrome 4x에서 작동하며 내장 도구를 사용하여 모든 상점으로 가져 오기를 거부했습니다.
Kendrick

93

Mac에서는 다음을 수행하여 시스템 레벨에서 Chrome 및 Safari가 완전히 신뢰하는 인증서를 작성할 수 있습니다.

    # 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

위의 주제 대체 이름 누락 오류v3.ext피하기 위해 다음 스크립트와 지원 파일 을 사용 합니다.

자신의 루트 권한을 사용하여 완전히 신뢰할 수있는 새로운 자체 서명 인증서를 작성하려는 경우이 스크립트를 사용하여 수행 할 수 있습니다.

create_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

create_certificate_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%%

한 단계 더-Chrome / Safari에서 자체 서명 된 인증서를 완전히 신뢰하는 방법

Chrome 및 Safari에서 자체 서명 된 인증서를 완전히 신뢰하려면 새 인증 기관을 Mac으로 가져와야합니다. 이를 수행하려면 다음 지시 사항 또는 mitmproxy 웹 사이트 의이 일반 프로세스 대한 자세한 지시 사항을 따르십시오 .

이 명령을 사용하여 명령 행에서 다음 두 가지 방법 중 하나를 수행하여 비밀번호를 묻습니다.

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

또는 Keychain Access앱 을 사용하여 :

  1. 열린 키 체인 접근
  2. "키 체인"목록에서 "시스템"을 선택하십시오
  3. "카테고리"목록에서 "인증서"를 선택하십시오.
  4. "파일 | 항목 가져 오기 ..."를 선택하십시오.
  5. 위에서 생성 된 "rootCA.pem"파일을 찾아서 선택한 다음 "열기"를 클릭하십시오.
  6. "인증서"목록에서 새로 가져온 인증서를 선택하십시오.
  7. "i"버튼을 클릭하거나 인증서를 마우스 오른쪽 버튼으로 클릭하고 "정보 입수"를 선택하십시오.
  8. "신뢰"옵션을 확장하십시오
  9. "이 인증서를 사용하는 경우"를 "항상 신뢰"로 변경하십시오.
  10. 대화 상자를 닫으면 암호를 묻는 메시지가 나타납니다.
  11. 대상 도메인을 사용중인 탭을 닫았다가 다시 열면 안전하게로드됩니다!

그리고 보너스로, 인증서를 신뢰하기 위해 Java 클라이언트가 필요한 경우 인증서를 Java 키 저장소로 가져 와서 그렇게 할 수 있습니다. 키 스토어가 이미 존재하는 경우 인증서가 변경되면 변경해야하므로 인증서를 제거합니다. 물론 가져 오는 인증서에 대해서만이 작업을 수행합니다.

import_certs_in_current_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

실행할 때 "개인 키 rootCA.key 열기 오류"가 발생했습니다 $ ./create_root_cert_and_key.sh. macOS 10.12.4 및 OpenSSL 0.9.8zh 2016 년 1 월 14 일
도넛

1
$ openssl genrsa -out rootCA.key 2048전에 실행 $ ./create_root_cert_and_key.sh하면 "개인 키 rootCA.key 열기 오류"오류가 발생했습니다.
도넛

@donut-이것을 지적 해 주셔서 감사합니다-나는 그 줄을 복제 했으므로 당신이 본 문제가 발생했다고 확신합니다 ...
Brad Parks

openssl req -new -newkey rsa:2048 -sha256 -nodes -key device.key -subj "$SUBJECT" -out device.csr"PRivate Key device.key를 여는 중 오류 발생"오류가 발생했습니다.이 명령을 작성해야한다고 생각 device.key했지만 어떤 이유로 든 읽으려고하는 것 같습니다.
Lenny

2
해결책을 알아 냈습니다 (다른 사람이이 경우에 대비 -key하여) -keyout...openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout device.key -subj "$SUBJECT" -out device.csr
Lenny

90

2017 년 11 월 업데이트 :이 답변은 최신 버전의 Chrome에서는 작동하지 않을 수 있습니다.

업데이트 02/2016 : Mac 사용자를위한 더 나은 지침은 여기를 참조하십시오 .

  1. 추가하려는 사이트에서 주소 표시 줄의 빨간색 자물쇠 아이콘을 마우스 오른쪽 버튼으로 클릭하십시오.여기에 이미지 설명을 입력하십시오

    1. 연결 탭 을 클릭 한 다음 인증서 정보 를 클릭하십시오.

    2. 클릭 세부 정보 탭의 버튼 클릭 ... 파일에 복사를 . 그러면 인증서 내보내기 마법사가 열리고 다음 을 클릭 하여 내보내기 파일 형식 화면으로 이동하십시오.

    3. 선택 DER로 인코딩 된 X.509 바이너리 (.CER) 를 클릭합니다 다음을

    4. 찾아보기 ...를 클릭 하고 파일을 컴퓨터에 저장하십시오. 설명하기 쉬운 이름을 지정하십시오. 클릭 다음 , 다음을 클릭합니다 마침 .

    5. Chrome 설정을 열고 하단으로 스크롤 한 다음 고급 설정 표시 ...를 클릭하십시오 .

    6. HTTPS / SSL 아래에서 인증서 관리 ...를 클릭 하십시오.

    7. 클릭 신뢰할 수있는 루트 인증 기관 탭을 다음 클릭 가져 오기 ... 버튼을 클릭합니다. 인증서 가져 오기 마법사가 열립니다. 다음 을 클릭 하여 가져올 파일 화면으로 이동하십시오.

    8. 클릭 찾아보기를 ... 당신이 이전에 저장 인증서 파일을 선택한 다음 클릭 다음 .

    9. 다음 저장소에 모든 인증서 배치를 선택하십시오 . 선택한 상점은 신뢰할있는 루트 인증 기관 이어야합니다 . 그렇지 않은 경우 찾아보기 ...를 클릭 하고 선택하십시오. 다음을 클릭 하고 완료

    10. 보안 경고에서 를 클릭하십시오 .

    11. Chrome을 다시 시작하십시오.


2
@AJeneral 예, Chrome이 다시 변경되었습니다. 이 기사 의 지침은 최근에 저에게 효과적이었습니다.
kmgdev

2
이 의견은이 의견 일 현재 최신 Chrome에는 존재하지 않습니다.
y3sh

1
@kgrote, Chrome에는 자체 인증서 저장소가 없습니다. Windows를 추가하고 제거하기 만하면됩니다. 따라서 더 좋은 방법은 단순히 certmgr.msc인증서를 추가하고 삭제 하는 데 사용 하는 것입니다.
Pacerier

1
고맙습니다. Chrome을 다시 시작해야했으며 가장 중요한 것은 2017 년 전에 인증서가 만료되어야했습니다. SHA-1.
ioanb7

1
크롬이 다시 바뀌었다! 이제 "주소 표시 줄에서 X로 작은 자물쇠를 클릭하십시오. 그러면 작은 정보 화면이 나타납니다." 작동하지 않습니다.
Bruno Bronosky

59

당신이 경우 맥에 와 수출 탭을 보는 방법이나이 나를 위해 일한 인증서를 얻을 수 없습니다 :

  1. https : // 앞의 자물쇠를 클릭하십시오.
  2. "연결"탭으로 이동
  3. "인증서 정보"를 클릭하십시오

    이제 이것을 볼 수 있습니다 : 물론 다른 정보와 정보는 신뢰할 수있는 것으로 표시되어야합니다 (그렇지 않으면 아마도 여기에 없을 수도 있습니다).

  4. 작은 인증서 아이콘을 데스크탑이나 다른 곳으로 드래그하십시오.

  5. 다운로드 한 .cer 파일을 두 번 클릭하면 키 체인으로 가져 와서 인증서 목록에 대한 키 체인 액세스가 열립니다.

    경우에 따라 이것으로 충분하며 이제 페이지를 새로 고칠 수 있습니다.

    그렇지 않으면:

  6. 새로 추가 된 인증서를 두 번 클릭하십시오.
  7. 신뢰 드롭 다운에서 "이 인증서를 사용하는 경우"옵션을 "항상 신뢰"로 변경하십시오.

이제 해당 페이지를 새로 고침하면 문제가 해결 될 것입니다! 도움이 되었기를 바랍니다.


에서 수정 Wolph

좀 더 쉽게하기 위해 다음 스크립트 ( source )를 사용할 수 있습니다 .

  1. 다음 스크립트 를 다음과 같이 저장하십시오 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. 셸에서 스크립트를 실행 가능하게 만듭니다.

    chmod +x whitelist_ssl_certificate.ssh
  3. 원하는 도메인에 대한 스크립트를 실행하십시오 (전체 URL 작업을 간단히 복사 / 붙여 넣기).

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

1
이 접근법은 OS X Mavericks에서 저에게 효과적이었습니다 . 위의 최상위 답변에 설명 된 것처럼 내보내기 옵션 이 없었습니다 .
Kevin Leary

잘 작동합니다. https 전의 잠금은 여전히 ​​중지되었지만 더 이상 성가신 팝업이 없기 때문에 괜찮습니다.
nalply

이것은 Mac Catalina에서 나를 위해 일했습니다. 감사! :)
Saurabh

58

업데이트4 월 23/2020에

Chromium 팀에서 추천

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

빠르고 쉬운 솔루션

보안 오류에도 불구하고 Chrome이 계속 진행되도록 오류 페이지에 입력 할 수있는 비밀 우회 문구가 있습니다. thisisunsafe (이전 Chrome 버전에서는 badidea 및 심지어는 위험 ). DO NOT 당신이 그것을 필요로 왜 사용이 계약은 귀하가 정확히 이해하지!

출처:

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

(참고로 window.atob('dGhpc2lzdW5zYWZl')해결됨 thisisunsafe)

소스의 최신 버전은 @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js 이며window.atob 기능을 실행할 수있다 JS 콘솔.

Chrome 팀이 우회 문구를 처음 변경 한 이유에 대한 배경 설명 :

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

다른 모든 방법이 실패하면 (솔루션 # 1)

"Proceed Anyway"옵션을 사용할 수 없거나 바이 패스 문구가 작동하지 않는 경우 일회성으로 빠르게이 해킹이 작동합니다.

  1. localhost이 플래그를 사용하여 인증서 오류를 허용 합니다 (플래그 값을 변경 한 후 Chrome을 다시 시작해야 함).

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

    (및 @Chris의 투표 응답 https://stackoverflow.com/a/31900210/430128 )

  2. 연결하려는 사이트 localhost가입니다. 그렇지 않으면 TCP 터널을 설정하여 포트 8090에서 로컬로 청취하고 포트 broken-remote-site.com443에서 연결 socat하고 터미널 창에서 다음과 같은 것을 설치하고 실행 했는지 확인하십시오 .

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

  3. 로 이동 https : //로 로컬 호스트 : 8090을 브라우저에.

다른 모든 방법이 실패하면 (솔루션 # 2)

"다른 모든 방법이 실패하면 (솔루션 # 1)"과 유사하게 ngrok를 사용하여 로컬 서비스에 프록시를 구성합니다 . TLS (유효한 인증서로 ngrok에 의해 종료 됨)를 통해 또는 비 TLS 엔드 포인트를 통해 ngrok http 터널에 액세스 할 수 있으므로 브라우저는 유효하지 않은 인증서에 대해 불평하지 않습니다.

ngrok을 다운로드하여 설치 한 후 다음을 통해 공개하십시오 ngrok.io.

ngrok http https://localhost

ngrok가 시작되고 연결할 수있는 호스트 이름을 제공하며 모든 요청이 로컬 컴퓨터로 다시 터널링됩니다.


10
quora.com/…에 명시된 바와 같이 , 다른 옵션은 페이지의 아무 곳이나 클릭하고 "badidea"를 작성하는 것입니다
smihael

If-all-fails 의 첫 번째 포인트는 크롬 60 우분투 14.04
formatkaka

이것은 여전히 ​​인증서를 유효하지 않은 것으로 취급하고 암호 관리가 작동을 거부하게합니다.
Ray Foss

34

테스트 환경

당신이 사용할 수있는 --ignore-certificate-errors크롬을 시작할 때 명령 행 매개 변수로 (Ubuntu의 버전 28.0.1500.52에서 작업).

이로 인해 오류가 무시되고 경고없이 연결됩니다. 이미 크롬 버전을 실행중인 경우 명령 줄에서 다시 시작하기 전에이 버전을 닫아야합니다. 그렇지 않으면 새 창이 열리지 만 매개 변수는 무시합니다.

테스트 서버에 유효한 인증서가 없기 때문에 디버깅 할 때이 방법으로 Chrome을 시작하도록 Intellij를 구성합니다.

인증서 검사는 중요한 보안 기능이므로 일반적인 브라우징은 권장하지 않지만 일부에게는 도움이 될 수 있습니다.


5
그것은 Windows 8에서 나를 위해 일했습니다! 크롬 바로 가기> 속성> 다음과 같이 변경된 '대상'필드를 마우스 오른쪽 버튼으로 클릭했습니다 ( '--ignore-certificate-errors'는 따옴표 뒤에 공백으로 추가해야 함) : "C : \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe "--ignore-certificate-errors
mikhail-t

1
이것은 질문에 대한 답이 아니며 위험합니다. 문제는 Chrome이 자체 서명 된 서버 인증서를 신뢰하도록하는 방법이었습니다. 경고와 오류를 무시하는 방법이 아닙니다.
jww

1
이것은 Windows 7 (64 비트)의 Chrome (63.0.3239.108)에서 나를 위해 일한 유일한 솔루션입니다. 보안과 관련하여 로컬 가상 머신에서 개발할 때만 시작되는 데스크탑에 특수 아이콘을 만들었습니다. 자체 서명 된 로컬 인증서를 가져 오면 chrome : // flags 및 HSTS 도메인 조정이 도움이되지 않았습니다. Chrome은 확실히 이전의 좋은 버튼 인 "보안 예외 추가"를 유지해야합니다. 쓸모없는 설정으로 2 시간의 어려움을 겪지 않아도됩니다.
lubosdz

이 튜토리얼은 매력처럼 작동했습니다! youtube.com/watch?v=qoS4bLmstlk
Jonathan Martins

20

누군가 언급했듯이 브라우저 창뿐만 아니라 모든 Chrome을 다시 시작해야합니다. 가장 빠른 방법은 탭을 열어서 ...

chrome://restart


야! 이것이 나를 위해 고쳐 놓은 것임을 지적하고 싶었습니다. 나는 트러스트 스토어에 커스텀 CA를 추가하고 있었고, 항상 그런 식으로 나를 위해 일했다. Firefox를 사용해 보았지만 완벽하게 작동했지만 크롬은 작동하지 않았습니다. 결국 그것은 언급 한대로 크롬을 완전히 다시 시작해야하기 때문입니다. 백그라운드 프로세스가 계속 실행되는 한 Chrome에서 동일한 신뢰 저장소를 계속 사용하고있을 수 있습니다.
Jose Cifuentes

19

WINDOWS JUN / 2017 Windows Server 2012

@Brad Parks 답변을 따랐습니다. Windows에서는 신뢰할 수있는 루트 인증 기관 저장소에서 rootCA.pem을 가져와야합니다.

다음 단계를 수행했습니다.

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

v3.ext는 다음과 같습니다.

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

그런 다음 자체 호스팅 웹 응용 프로그램이 있으므로 IP 주소와 포트로 인증서를 바인딩해야하며 인증서는 개인 키 정보로 내 저장소에 있어야하므로 pfx 형식으로 내 보냅니다.

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

mmc 콘솔 (파일 / 추가 또는 제거 스냅인 / 인증서 / 추가 / 컴퓨터 계정 / 로컬 컴퓨터 / 확인)을 사용하여 개인 저장소에 pfx 파일을 가져 왔습니다.

나중에이 명령을 사용하여 인증서를 바인딩했습니다 (HttpConfig 도구를 사용할 수도 있습니다).

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

certhash = 인증서 Thumprint

appid = GUID (선택)

먼저 신뢰할 수있는 루트 인증 기관에서 "device.crt"인증서를 다른 방식으로 가져 오려고했지만 여전히 같은 오류가 발생합니다.

여기에 이미지 설명을 입력하십시오

그러나 도메인의 인증서가 아닌 루트 권한의 인증서를 가져와야한다는 것을 깨달았습니다. 따라서 mmc 콘솔 (파일 / 추가 또는 제거 스냅인 / 인증서 / 추가 / 컴퓨터 계정 / 로컬 컴퓨터 / 확인)을 사용했습니다. 신뢰할 수있는 루트 인증 기관 저장소에서 rootCA.pem을 가져 왔습니다.

여기에 이미지 설명을 입력하십시오

Chrome을 다시 시작하면 작동합니다.

localhost로 :

여기에 이미지 설명을 입력하십시오

또는 IP 주소로 :

여기에 이미지 설명을 입력하십시오

내가 달성 할 수없는 유일한 것은 오래된 암호 (그림에 빨간색 사각형)가 있다는 것입니다. 이 시점에서 도움을 주셔서 감사합니다.

makecert를 사용하면 SAN 정보를 추가 할 수 없습니다. New-SelfSignedCertificate (Powershell)를 사용하면 SAN 정보를 추가 할 수 있으며 작동합니다.


2
중요 : OpenSSL을 관리자 권한으로 실행하십시오.
Jose A

이 답변은 2019 년 1 월 현재 Chrome [71.0.3578.98]에서 작동합니다.
ShadeBlack

덕분에 많은 도움이되었습니다 (Chrome 75-7 월 2019). netsh httpWindows 서버를 사용하지 않으면 단계 가 필요하지 않습니다 . 또한 인증서 파일을 pfx로 내 보내야한다고 생각하지 않습니다.

작동 확인 : Chrome
81-2020

15
  1. 신뢰할 수있는 루트 CA 저장소에 CA 인증서를 추가하십시오.

  2. 크롬으로 이동하여이 플래그를 활성화하십시오!

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

마지막으로 * .me 도메인 또는 * .com 및 * .net과 같은 유효한 도메인을 사용하여 호스트 파일에 유지하십시오. 내 로컬 개발자의 경우 다음과 같이 유지 관리되는 호스트 파일과 함께 * .me 또는 * .com을 사용합니다.

  1. 호스트에 추가하십시오. C : / windows / system32 / drivers / etc / hosts

    127.0.0.1 nextwebapp.me

참고 : 이 작업을 수행 할 때 브라우저가 이미 열려 있으면 오류가 계속 표시됩니다. 브라우저를 닫고 다시 시작하십시오. 더 좋은 방법은 시크릿 모드로 들어가거나 새 세션을 시작하여 즉시 적용하는 것입니다.


이것은 최고 투표 답변 과 동일한 것 같습니다 .
Michael-Clay Shirky는 어디에

로컬 개발에서 허용되는 도메인 이름 (예 : * .me 사이트) 만 Windows의 호스트 파일에 추가했습니다. 사람들은 인증서를 추가하지만 인증서가 제대로 설치되어 있어도 호스트가 SSL 확인을 확인하지 못하는 경우가 있습니다. 이 경우 새 세션을 만듭니다. 그 팁만 추가했습니다. 나는이 토끼 구멍을 너무 깊게 통과하여 필요한 경우 누군가가 무엇을 해야하는지 알고 싶었습니다.
Ariel

14

사이트가 제공되는 주소가 인증서와 동일합니까? Chrome과 자체 서명 된 인증서와 동일한 문제가 있었지만 결국 인증서에서 도메인 이름의 유효성 검사에 대해 엄청나게 까다로운 것으로 나타났습니다.

Chrome에는 자체 인증서 저장소가 없으며 Window 자체 인증서를 사용합니다. 그러나 Chrome에서는 인증서를 저장소로 가져올 수있는 방법이 없으므로 대신 IE를 통해 인증서를 추가해야합니다.

Chrome에서 인증서 설치

Internet Explorer에서 인증서 설치

또한 자체 서명 된 인증서를 만드는 두 가지 다른 접근 방식에 대해서도 살펴보십시오 (언급하지 않은 IIS를 사용한다고 가정합니다).

IIS 7에서 자체 서명 된 인증서를 만드는 방법


문제의 사이트는 localhost 이고 인증서의 CN은 "localhost"입니다. 예, Windows 인증서 저장소에 인증서를 설치했습니다. IE와 Chrome 모두 인증서에 대해 불평합니다.
pjohansson

IIS 또는 Apache를 사용하고 있는지 확실하지 않지만 IIS에 대해 자체 서명 된 인증서 작성시 방금 추가 한 추가 링크를 확인하십시오.
Ira Rainey

인증서 부분 에서 도메인 이름의 유효성 검사에 대해 엄청나게 까다롭기 때문에 누군가가 그것에 대해 더 많이 알고 있습니까? 루트 인증서로 Android 9에 문제가 있습니다 (2019 년). 이는 Chrome에서 안전하지 않은 것으로 비난됩니다. FF 및 데스크탑에서는 정상입니다.
BairDev

7

bjnord가 제안한 것을 사용하는 프로세스를 중단했습니다 : Chrome, Mac OS X 및 자체 서명 된 SSL 인증서

블로그에 표시된 내용이 작동하지 않았습니다.

그러나 블로그에 대한 의견 중 하나는 금이었습니다.

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

cert 파일을 얻는 방법에 대한 블로그를 따라야합니다. 그 후에 위의 명령을 사용할 수 있으며 계속 진행해야합니다.


7

Linux의 Chromium에서 SSL 인증서를 관리하기위한 GUI가 제대로 작동하지 않았습니다. 그러나 그들의 문서는 정답을 주었다. 트릭은 자체 서명 된 SSL 인증서를 가져 오는 아래 명령을 실행하는 것이 었습니다. <certificate-nickname>and 의 이름을 업데이트 certificate-filename.cer한 다음 크롬 / 크롬을 다시 시작 하면 됩니다.

문서에서 :

Linux에서 Chromium은 NSS 공유 DB를 사용합니다. 기본 제공 관리자가 작동하지 않으면 NSS 명령 줄 도구를 사용하여 인증서를 구성 할 수 있습니다.

도구를 얻으십시오

  • 데비안 / 우분투 : sudo apt-get install libnss3-tools

  • 페도라 : su -c "yum install nss-tools"

  • 젠투 : su -c "echo 'dev-libs/nss utils' >> /etc/portage/package.use && emerge dev-libs/nss"(아래와 같이 nss접두사를 nsscertutil붙여 모든 명령을 시작해야합니다 .) Opensuse :sudo zypper install mozilla-nss-tools

자체 서명 된 서버 인증서를 신뢰하려면 다음을 사용해야합니다.

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

모든 인증서 나열

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

TRUSTARGS는 0 개 이상의 영문자로 이루어진 3 개의 문자열이며 쉼표로 구분됩니다. 인증서는 SSL, 전자 메일 및 객체 서명에 대해 인증서를 신뢰하는 방법을 정의하고 certutil 문서 또는 Meena의 트러스트 플래그에 대한 블로그 게시물에 설명되어 있습니다.

SSL 클라이언트 인증을위한 개인 인증서 및 개인 키 추가 다음 명령을 사용하십시오.

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

PKCS # 12 파일에 저장된 개인 인증서 및 개인 키를 가져옵니다. 개인 인증서의 TRUSTARGS는“u, u, u”로 설정됩니다.

인증서 삭제 certutil -d sql:$HOME/.pki/nssdb -D -n <certificate nickname>

발췌 : https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md


7

Filippo Valsorda는 많은 신뢰 저장소 mkcert를 위해이를 위해 크로스 플랫폼 도구를 작성했습니다 . 나는 그가이 질문에 대한 답이 너무 많다는 동일한 이유로 그것을 썼다고 추정한다 : 신뢰할 수있는 루트 CA에 의해 서명 된 SubjectAltName 인증서에 대해 "올바른"일을하는 것은 고통 스럽다.

mkcert Windows, macOS 및 여러 Linux 버전의 주요 패키지 관리 시스템에 포함되어 있습니다.

mkcert

mkcert로컬에서 신뢰할 수있는 개발 인증서를 만들기위한 간단한 도구입니다. 구성이 필요하지 않습니다.

$ 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

URL 옆에있는 작은 자물쇠 아이콘을 클릭하면 다음과 같은 상자가 나타납니다.

여기에 이미지 설명을 입력하십시오

인증서 정보 링크를 클릭하면 다음 대화 상자가 나타납니다.

여기에 이미지 설명을 입력하십시오

올바른 인증서 저장소를 알려줍니다. 신뢰할 수있는 루트 인증 기관 저장소입니다.

다른 답변에 설명 된 방법 중 하나를 사용하여 해당 저장소에 인증서를 추가하거나 다음을 사용할 수 있습니다.

certutil -addstore -user "ROOT" cert.pem
  • ROOT 앞에서 언급 한 인증서 저장소의 내부 이름입니다.
  • cert.pem 자체 서명 된 인증서의 이름입니다.

1
certutil -addstore -user "ROOT" cert.pemWindows입니까?
Pacerier

1
@Pacerier : 맞습니다. Windows 용입니다.
Der Hochstapler

당신은 그것을 가지고 Trusted Root Certification Authorities있지만 여전히 문제가 남아 있습니다 : imgur.com/a/mjlglVz imgur.com/a/n8BFH5S Windows 10, 크롬 78
tryingHard

6

이것은 나를 위해 일했습니다. 참조 : http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc

주소 표시 줄에서 X 표시가있는 작은 자물쇠를 클릭하면 작은 정보 화면이 나타납니다. "인증서 정보"라고 표시된 버튼을 클릭하십시오.

이미지를 클릭하고 바탕 화면으로 드래그하십시오. 작은 인증서처럼 보입니다.

두 번 클릭하십시오. Keychain Access 유틸리티가 나타납니다. 잠금을 해제하려면 비밀번호를 입력하십시오.

로그인 키 체인이 아닌 시스템 키 체인에 인증서를 추가해야합니다. 아무것도하지 않는 것처럼 보이지만 "항상 신뢰"를 클릭하십시오.

추가 된 후 두 번 클릭하십시오. 다시 인증해야 할 수도 있습니다.

"신뢰"섹션을 펼치십시오.

"이 인증서를 사용할 때" "항상 신뢰"로 설정


6

나는 모든 것을 시도하고 그것을 작동 시켰습니다 : 가져올 때 올바른 카테고리, 즉 신뢰할 수있는 루트 인증 기관을 선택하십시오 :

(미안하지만 독일어이지만 이미지를 따르십시오)

여기에 이미지 설명을 입력하십시오


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
크롬 77에서 저에게 도움이 된 유일한 제품입니다. 저의 하루를 구해 주셔서 감사합니다.
Romain

생성 된 파일을 어떻게 사용합니까? 도메인 .crt 및 .key 파일을 사용하는 방법을 알고 있지만 .csr 파일은 무엇입니까? rootCA. * 파일은 어떻게 사용합니까? 답변을 확장하십시오 ...
Chiwda

정말 감사합니다. 방금 저의 하루를 구했습니다!
dodancs

6

이 게시물은 이미 응답으로 가득 차 있지만 Chrome에서 유효한 자체 서명 TLS 인증서를 쉽게 생성 할 수 있도록 다른 답변 중 일부를 기반으로 bash 스크립트 를 만들었습니다 (Tested in ). 다른 사람들에게 유용하기를 바랍니다.Chrome 65.x

자체 서명 된 tls bash 스크립트

인증서 를 설치 하고 신뢰 한 후에 는 Chrome을 다시 시작해야합니다 ( chrome://restart).


확인할 가치가있는 또 다른 도구는 CloudFlare의 cfssl툴킷입니다.

cfssl


6

Windows에서 Chrome v58 이상이 신뢰하는 자체 서명 된 인증서를 만들려면 높은 권한으로 Powershell을 시작하고 다음을 입력하십시오.

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!!

이렇게하면 인증서가 개인 \ 인증서 저장소 의 로컬 컴퓨터 인증서에 저장됩니다.

이 인증서를 신뢰할 수있는 루트 인증 기관 \ 인증서 저장소 에 복사하려고합니다 .

이를 수행하는 한 가지 방법 : Windows 시작 단추를 클릭하고을 입력하십시오 certlm.msc. 그런 다음 새로 만든 인증서를 아래 스크린 샷 에 따라 신뢰할 수있는 루트 인증 기관 \ 인증서 저장소로 끌어다 놓습니다 . 여기에 이미지 설명을 입력하십시오


Mac에서이 작업을 수행하는 방법은 무엇입니까? 고마워 :)
Artanis Zeratul

@mpowrie. 이것을 생성 한 후 Apache 웹 서버에 어떻게 연결합니까? localhost 서버에서.
Ifedi Okonkwo

Ifedi Okonkwo : Apache 웹 서버가 유감 스럽지만 IIS에서는 https 유형의 사이트 바인딩을 추가하고 정규화 된 호스트 이름을 포함하고 SSL 인증서를 선택합니다.
mpowrie

이것은 매력처럼 작동합니다. 해당 인증서를 바인딩으로 지정하고 인증서가 개인> 인증서에도 있어야하는 경우 추가 단계를 수행해야한다고 말씀 드리겠습니다. 어떤 이유로 끌어서 놓기가 실제로 개인 인증서에서 해당 인증서를 제거하여 신뢰할 수있는 인증서에 배치했습니다. 복사하여 붙여 넣으십시오.
StephenPAdams

5

mac / osx의 SSL / HTTPS 로컬 호스트 수정 :

  1. https 로컬 호스트 환경을 열려고 할 때 주소 표시 줄에 십자가가있는 빨간색 자물쇠를 클릭하십시오. 인증서에 대한 정보가 포함 된 창이 열립니다.

  2. "세부 사항" 정보 창을 클릭하십시오

  3. '보안'탭에서 크롬 개발자 도구가 열립니다. 인증서보기를 클릭하십시오 . 인증서 이미지
  4. '시스템'키 체인에 추가하십시오 (기본적으로 선택된 '로그인'키 체인 아님).

  5. 키 체인을 다시 열고 인증서를 찾으십시오. 그것을 클릭하고 당신이 "신뢰"를 확인하십시오.

  6. 크롬을 다시 시작하면 작동합니다.


바보 같은 그래픽 인터페이스는 MacoOS 10.14.5에서 인증서를 수락하지 않을 수 있지만로 가져올 수 있습니다 security import filename.pem -k ~/Library/Keychains/login.keychain. 그래픽은 오류 -25294
boatcoder

5

같은 문제가 발생했습니다. 인증서를 Windows의 신뢰할 수있는 루트 인증 기관 저장소에 설치했지만 Chrome에서 여전히 인증서를 거부했습니다 (오류 :) ERR_CERT_COMMON_NAME_INVALID. 인증서가 저장소에 제대로 설치되지 않은 경우 오류는ERR_CERT_AUTHORITY_INVALID 입니다.

오류 이름, 이 설명이 질문 에서 알 수 있듯이 문제는 인증서의 선언 된 도메인 이름에 있습니다. 인증서를 생성하는 동안 "공통 이름"을 묻는 메시지가 표시되면 사이트에 액세스하는 데 사용한 도메인 이름을 입력해야했습니다 ( localhost필자의 경우). 사용하여 Chrome을 다시 시작 chrome://restart했으며 마침내이 새로운 인증서에 만족했습니다.


나는 또한 로컬 호스트를 사용하고 있지만, 크롬 그것에 대해 행복하지 않다 imgur.com/a/mjlglVz 윈도우 10, 크롬 78 여기에서 지시를 따라 : stackoverflow.com/a/44398368/4983983 내가 통해 페이지에 액세스 로컬 호스트
tryingHard

일반적인 이름을 사용하여 "로컬 호스트는"거의 일을하고 마침내는 나는 또한 옵션으로 크롬을 출시 작업 한--allow-insecure-localhost
pestophagous

5

Chrome 58 이상에서는 SAN이 누락 되어 macOS 에서 인증서 오류가 발생하기 시작했습니다 . 주소 표시 줄에 녹색 잠금을 다시 설정하는 방법은 다음과 같습니다.

  1. 다음 명령으로 새 인증서를 생성하십시오.

    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. server.crt체인으로 가져온 다음 인증서를 두 번 클릭하고 신뢰를 확장 한 후 항상 신뢰를 선택하십시오.

Chrome에서 https://domain.dev 페이지를 새로 고치면 녹색 잠금이 다시 시작됩니다.


이것은 하위 도메인에서 작동 api.domain.dev하지만 여전히 경고 페이지가 있습니다 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.어떤 아이디어?
François Romain

5

MacOS의 Chrome의 경우 인증서를 준비한 경우 :

  • Chrome 종료 ( cmd+Q ).
  • 키 체인 접근 앱을 시작하고 "인증서"카테고리를여십시오.
  • 인증서 파일을 키 체인 접근 창으로 끌어서 인증서 파일의 비밀번호를 입력하십시오.
  • 인증서를 두 번 클릭하고 "신뢰"목록을 펼치십시오.
    • "이 인증서를 사용할 때"행에서 "항상 신뢰"를 선택하십시오.
    • 이 물건을 닫고 암호를 입력하십시오.
  • Chrome을 시작하고 모든 캐시를 지우십시오.
  • 모든 것이 정상인지 확인하십시오.

5

이 방법을 통해 안전하지 않은 localhost가 제대로 작동하도록 허용 chrome : // flags / # allow-insecure-localhost

개발 호스트 이름을 xxx.localhost로 만들어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.