your programing

자체 서명 된 로컬 호스트 인증서를 허용하도록 Chrome 받기

lovepro 2020. 9. 27. 13:32
반응형

자체 서명 된 로컬 호스트 인증서를 허용하도록 Chrome 받기


localhost CN에 대해 자체 서명 된 SSL 인증서를 만들었습니다. Firefox는 예상대로 처음에 불만을 제기 한 후이 인증서를 수락합니다. 그러나 Chrome과 IE는 Trusted Roots 아래의 시스템 인증서 저장소에 인증서를 추가 한 후에도 수락을 거부합니다. Chrome의 HTTPS 팝업에서 "인증서 정보보기"를 클릭하면 인증서가 올바르게 설치된 것으로 표시되지만 여전히 인증서를 신뢰할 수 없다고 주장합니다.

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


의 경우 localhost에만 해당 :

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

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

강조 표시된 텍스트가 표시되어야합니다 : localhost에서로드 된 리소스에 대해 잘못된 인증서 허용

를 클릭하십시오 Enable.


이것은 나를 위해 일했습니다.

  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을 다시 시작하십시오.

CHROME 58 이상용 업데이트 (2017 년 4 월 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.

Chrome 인증서 뷰어


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

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

원래:

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

페이지의 아무 곳이나 클릭하고 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'));

업데이트 11/2017 :이 답변은 대부분의 최신 버전의 Chrome에서 작동하지 않을 것입니다.

2016 년 2 월 업데이트 : Mac 사용자를위한 더 나은 지침은 여기 에서 찾을 수 있습니다 .

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

    1. 연결 이라고 표시된 탭 을 클릭 한 다음 인증서 정보 를 클릭합니다.

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

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

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

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

    6. HTTPS / SSL 아래에서 인증서 관리 ...를 클릭합니다 .

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

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

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

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

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


리눅스

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


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=999
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

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

  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
    

업데이트 : 2018 년 4 월 3 일

Chromium 팀에서 추천

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

빠르고 쉬운 솔루션

보안 오류에도 불구하고 Chrome이 계속 진행되도록 오류 페이지에 입력 할 수있는 비밀 우회 문구가 있습니다. thisisunsafe (이전 버전의 Chrome에서는 badidea를 입력 하고 그보다 이전에는 danger를 입력합니다 ). 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

다른 모든 것이 실패하면

"Proceed Anyway"옵션을 사용할 수 없거나 우회 문구가 작동하지 않는 경우 빠른 일회성 작업을 위해이 해킹이 잘 작동합니다.

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

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

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

  2. 연결하려는 사이트가 localhost이면 완료된 것입니다. 그렇지 않으면 포트 8090에서 로컬로 수신하고 포트 broken-remote-site.com443에서 연결하도록 TCP 터널을 설정 socat하고 터미널 창에서 다음과 같은 것을 설치하고 실행 했는지 확인합니다 .

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

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


테스트 환경의 경우

--ignore-certificate-errors크롬을 시작할 때 명령 줄 매개 변수로 사용할 수 있습니다 (Ubuntu의 버전 28.0.1500.52에서 작동).

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

테스트 서버에 유효한 인증서가 없기 때문에 디버깅을 수행 할 때 이러한 방식으로 크롬을 실행하도록 Intellij를 구성합니다.

인증서 확인은 중요한 보안 기능이므로 이와 같은 일반적인 검색은 권장하지 않지만 일부 사용자에게는 도움이 될 수 있습니다.


누군가 언급했듯이 브라우저 창뿐만 아니라 모든 Chrome을 다시 시작해야합니다. 이를 수행하는 가장 빠른 방법은 탭을 여는 것입니다.

chrome://restart


WINDOWS 2017 년 6 월 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 콘솔 (파일 / 추가 또는 스냅인 / 인증서 / 추가 / 컴퓨터 계정 / LocalComputer / OK)을 사용하여 개인 저장소에서 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 콘솔 (파일 / 추가 또는 스냅인 / 인증서 / 추가 / Computert 계정 / LocalComputer / OK)을 사용하여 신뢰할 수있는 루트 인증 기관 저장소에 rootCA.pem을 가져 왔습니다.

여기에 이미지 설명 입력

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

localhost 사용 :

여기에 이미지 설명 입력

또는 IP 주소 :

여기에 이미지 설명 입력

내가 달성 할 수없는 유일한 것은 구식 암호 (사진에 빨간색 사각형)가 있다는 것입니다. 이 점에 대한 도움을 주시면 감사하겠습니다.

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


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

Chrome에는 자체 인증서 저장소가 없으며 Window 자체를 사용합니다. 그러나 Chrome은 인증서를 스토어로 가져올 수있는 방법을 제공하지 않으므로 대신 IE를 통해 추가해야합니다.

Google 크롬에 인증서 설치

Internet Explorer에서 인증서 설치

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

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


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

여기에 이미지 설명 입력

인증서 정보 링크를 클릭하면 다음 대화 상자가 표시됩니다.

여기에 이미지 설명 입력

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

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

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

bjnord가 제안한 Google Chrome, Mac OS X 및 자체 서명 된 SSL 인증서를 사용하는 과정을 진행했습니다.

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

그러나 블로그에 대한 댓글 중 하나는 금색이었습니다.

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

인증서 파일을 얻는 방법에 대한 블로그를 따라 가야합니다. 그 후에 위의 명령을 사용할 수 있으며 이동하는 것이 좋습니다.


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

자체 서명 된 TLS bash 스크립트

인증서 를 설치 ( 신뢰 ) 한 후 Chrome ( chrome://restart) 을 다시 시작하는 것을 잊지 마십시오.


확인해야 할 또 다른 도구는 CloudFlare의 cfssl도구 키트입니다.

cfssl


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체인으로를 가져온 다음 인증서를 두 번 클릭하고 신뢰를 확장하고 항상 신뢰를 선택 합니다.

Google 크롬에서 https://domain.dev 페이지를 새로 고침하면 녹색 자물쇠가 돌아옵니다.


나는 모든 것을 시도했고 무엇이 작동했는지 : 가져올 때 올바른 카테고리, 즉 신뢰할 수있는 루트 인증 기관을 선택하십시오 .

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

여기에 이미지 설명 입력


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

문서에서 :

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

도구 받기

  • Debian / Ubuntu : 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 개 이상의 알파벳 문자로 구성된 세 개의 문자열입니다. 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


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

  • Chrome을 종료합니다 ( cmd+ Q).
  • 키 체인 접근 앱을 시작하고 "인증서"카테고리를 엽니 다.
  • 인증서 파일을 키 체인 접근 창으로 드래그하고 인증서 파일의 암호를 입력하십시오.
  • 인증서를 두 번 클릭하고 "신뢰"목록을 펼칩니다.
    • "이 인증서를 사용할 때"행에서 "항상 신뢰"를 선택합니다.
    • 이 항목을 닫고 암호를 입력하십시오.
  • Chrome을 시작하고 모든 캐시를 지 웁니다.
  • 모든 것이 정상인지 확인하십시오.

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
)

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

xxx.localhost에 대한 개발 호스트 이름을 생성해야합니다.


Fedora 및 Ubuntu의 경우 example.com Not a Certification authorityGUI를 사용하여 새 루트 기관을 추가하는 인증서를 추가 할 때 오류 발생하는 경우.

Chrome에서 내 보낸 인증서로 다음을 시도해보세요. 모든 형식이 작동합니다 (base64 chain / singe, pkcs 7, der 바이너리 등). 모든 GUI 메서드가 비참하게 실패했을 때 이것은 나를 위해 일했습니다.

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

변경 사항을 보려면 크롬을 다시 시작하고 필요한 경우 백그라운드에서 종료하십시오. Firefox는 여전히 불평 할 것입니다.

나중에 필요한 경우 삭제하려면 Chrome-> 설정-> 고급-> 인증서 관리-> 서버로 이동하면 마지막으로 표시되며 삭제할 수 있습니다.

출처, 경고, 매우 반점이 있고 부분적으로 구식 : https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md


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

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

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

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


macosx에서 Chrome 런처를 조정하고 아래 스크립트를 추가해야했습니다. 아래와 같이 저장했습니다.

/ Applications / Google \ Chrome.app/Contents/MacOS/Chrome.command

#!/bin/sh
RealBin="Google Chrome"
AppDir="$(dirname "$0")"
exec "$AppDir/$RealBin" --ignore-certificate-errors "$@"

이 스크립트로 Chrome을 시작하면 자체 서명 된 인증서가 문제없이 작동합니다. 그러나이 스크립트로 시작된 브라우저로 웹을 탐색하지 마십시오 . 유효하지 않은 인증서에 대한 경고가 표시되지 않습니다!


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

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

이미지를 클릭하고 바탕 화면으로 끕니다. 작은 인증서처럼 보입니다.

두 번 클릭하십시오. 키 체인 접근 유틸리티가 나타납니다. 잠금을 해제하려면 비밀번호를 입력하세요.

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

추가 한 후 두 번 클릭합니다. 다시 인증해야 할 수 있습니다.

"신뢰"섹션을 확장합니다.

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


특히 Mac OS X Yosemite의 Google Chrome에서 계속해서 등장하는 것입니다!

고맙게도 우리 개발 팀 중 한 명이 오늘 저에게이 링크를 보냈고이 방법은 안정적으로 작동하지만 인증서를 수락하는 사이트를 제어 할 수 있습니다.

https://www.reddit.com/r/sysadmin/comments/3ercx4/chrome_shortcut_past_the_your_connection_is_not/cthporl

jersully 게시물 :

내부 인증서로 귀찮게하고 싶지 않다면 ...

  1. chrome://flags/주소 표시 줄에 입력 하십시오.
  2. 지정된 시간 동안 SSL 오류를 진행하려면 결정 기억으로 스크롤하거나 검색하십시오.
  3. 3 개월 동안 기억을 선택합니다.

Windows에서 Chrome 수정.

먼저 인증서를 내 보내야합니다.

  • 브라우저에서 URL을 찾으십시오. URL의 "https"부분이 빨간색 선으로 그어져 있고 왼쪽에 자물쇠 기호가 있습니다.
  • X 표시된 "https"세그먼트를 마우스 오른쪽 버튼으로 클릭합니다.
  • 다양한 정보가 담긴 정보창이 나타납니다.
  • "세부 정보"를 클릭합니다.
  • 인증서를 내보내고 지침에 따라 기본 설정을 수락합니다.

수입하려면

  • Chrome 설정으로 이동
  • "고급 설정"을 클릭하십시오.
  • HTTPS / SSL에서 "인증서 관리"를 클릭합니다.
  • "신뢰할 수있는 루트 인증 기관"으로 이동
  • "가져 오기"를 클릭하십시오
  • 이 인증서를 설치할 것인지 묻는 팝업 창이 나타납니다. "예"를 클릭하십시오.

동일한 문제가 발생했습니다. Windows의 Trusted Root Authorities 저장소에 인증서를 설치했지만 Chrome은 오류와 함께 여전히 인증서를 거부했습니다 ERR_CERT_COMMON_NAME_INVALID. 인증서가 저장소에 제대로 설치되지 않은 경우 오류는 ERR_CERT_AUTHORITY_INVALID입니다.

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

참고 URL : https://stackoverflow.com/questions/7580508/getting-chrome-to-accept-self-signed-localhost-certificate

반응형