최근에 Chrome이 자체 서명 된 SSL 인증서 작업을 중단하고 안전하지 않다고 생각합니다. DevTools | Security
탭 에서 인증서를 보면
주체 대체 이름 없음이 사이트의 인증서에 도메인 이름 또는 IP 주소가 포함 된 주체 대체 이름 확장이 없습니다.
인증서 오류 사이트의 인증서 체인 (net :: ERR_CERT_COMMON_NAME_INVALID)에 문제가 있습니다.
이 문제를 어떻게 해결할 수 있습니까?
최근에 Chrome이 자체 서명 된 SSL 인증서 작업을 중단하고 안전하지 않다고 생각합니다. DevTools | Security
탭 에서 인증서를 보면
주체 대체 이름 없음이 사이트의 인증서에 도메인 이름 또는 IP 주소가 포함 된 주체 대체 이름 확장이 없습니다.
인증서 오류 사이트의 인증서 체인 (net :: ERR_CERT_COMMON_NAME_INVALID)에 문제가 있습니다.
이 문제를 어떻게 해결할 수 있습니까?
CN=www.example.com
아마 틀렸을 것입니다. 호스트 이름은 항상 SAN에 있습니다. 에서 현재의 경우 CN은 , 다음이에서 있어야 SAN 도 (이 경우에 두 번 나열 할 수 있습니다). 더 많은 규칙과 이유는 인증 기관을 사용하여 인증서 서명 요청에 서명 하는 방법 및 openssl을 사용하여 자체 서명 된 인증서를 만드는 방법을 참조하십시오 . 또한 자체 서명 된 인증서를 적절한 신뢰 저장소에 배치해야합니다.
답변:
이 문제를 해결하려면 openssl
기본적으로 인증서를 생성 할 때 추가 매개 변수를 제공해야합니다.
-sha256 -extfile v3.ext
경우 v3.ext
에 그렇게 같은 파일이며, %%DOMAIN%%
당신이 당신으로 사용하는 것과 동일한 이름으로 대체 Common Name
. 여기 와 여기에 더 많은 정보 가 있습니다 . 일반적으로 인증서를 생성하려는 도메인에 Common Name
및 %%DOMAIN%%
을 설정합니다 . 따라서이면 www.mysupersite.com
둘 다에 사용할 것입니다.
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = %%DOMAIN%%
또 다른 참고 사항 : 자체 서명 된 인증서를 볼 때 Chrome에서 오류가 발생하지 않도록하는 것 뿐 이라면 여기에 설명 된대로 특수한 명령 줄 옵션으로 시작하여 Chrome이 모든 사이트에 대한 모든 SSL 오류를 무시하도록 지시 할 수 있습니다. 수퍼 유저
bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365 -sha256 -extfile v3.ext
됩니다. 물론 v3.ext
동일한 폴더의 파일에 를 저장해야 합니다.
unknown option -extfile
. 이 문제를 어떻게 해결합니까?
extfile
잘못된 openssl 명령에서 지시문을 사용하고 있습니까? 에서 사용되는 대신에서 openssl req -new ...
사용됩니다 openssl x509 -req ...
. 적어도 여기에 누군가가 말한 것입니다. 이 인증서를 완전히 생성하는 방법에 대한 유사한 질문에 대한 또 다른 답변에서 내가 가진 예
다음 솔루션은 크롬 65 ( ref ) 에서 나를 위해 일했습니다.
OpenSSL 구성 파일 생성 (예 : req.cnf)
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = www.company.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.company.com
DNS.2 = company.com
DNS.3 = company.net
이 구성 파일을 참조하는 인증서 만들기
openssl req -x509 -nodes -days 730 -newkey rsa:2048 \
-keyout cert.key -out cert.pem -config req.cnf -sha256
basicConstraints = CA:true
실종 되지 않았 나요?
내가 만든 bash는 스크립트를 쉽게 크롬에서 유효 자체 서명 된 TLS 인증서를 생성 할 수 있도록.
테스트되었으며 Chrome 65.x
여전히 작동 중입니다. 새 인증서를 설치 한 후에는 Chrome을 다시 시작해야합니다.
chrome://restart
확인해야 할 또 다른 (훨씬 더 강력한) 도구는 CloudFlare의 cfssl
도구 키트입니다.
나는 단순히 -subj
기계 IP 주소를 추가 하는 매개 변수 를 사용한다 . 따라서 하나의 명령으로 만 해결되었습니다.
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -sha256 -subj '/CN=my-domain.com/subjectAltName=DNS.1=192.168.0.222/' -keyout my-domain.key -out my-domain.crt
C, ST, L, O, OU, emailAddress와 같은 다른 속성을 추가하여 프롬프트없이 인증서를 생성 할 수 있습니다.
openssl.exe req -x509 -sha256 -newkey rsa:2048 -keyout certificate.key -out certificate.crt -days 365 -nodes -subj "/CN=my.domain.com" -addext "subjectAltName=DNS:my.domain.com"
다음 필요 IIS *.pfx
형식 :openssl.exe pkcs12 -export -out certificate.pfx -inkey certificate.key -in certificate.crt
macOS / Chrome에서 작동하는 자체 서명 인증서를 얻는 데 너무 많은 문제가있었습니다. 마지막으로 Mkcert, "원하는 이름으로 로컬에서 신뢰할 수있는 개발 인증서를 만드는 간단한 제로 구성 도구"를 발견했습니다. https://github.com/FiloSottile/mkcert
홈 디렉토리에 OpenSSL 구성 사본을 만듭니다.
cp /System/Library/OpenSSL/openssl.cnf ~/openssl-temp.cnf
또는 Linux :
cp /etc/ssl/openssl.cnf ~/openssl-temp.cnf
에 주체 대체 이름을 추가 openssl-temp.cnf
아래 [v3_ca]
:
[ v3_ca ]
subjectAltName = DNS:localhost
대체 localhost
당신이 그 인증서를 생성하려는 도메인.
인증서 생성 :
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-config ~/openssl-temp.cnf
-keyout /path/to/your.key -out /path/to/your.crt
그런 다음 삭제할 수 있습니다. openssl-temp.cnf
다음은 Chrome이 신뢰할 수있는 IP 인증서를 만드는 매우 간단한 방법입니다.
ssl.conf 파일 ...
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
commonName = 192.168.1.10
[ req_ext ]
subjectAltName = IP:192.168.1.10
물론 192.168.1.10은 Chrome이 신뢰하기를 원하는 로컬 네트워크 IP입니다.
인증서를 만듭니다.
openssl genrsa -out key1.pem
openssl req -new -key key1.pem -out csr1.pem -config ssl.conf
openssl x509 -req -days 9999 -in csr1.pem -signkey key1.pem -out cert1.pem -extensions req_ext -extfile ssl.conf
rm csr1.pem
Windows에서는 모든 클라이언트 컴퓨터의 신뢰할 수있는 루트 인증서 저장소로 인증서를 가져옵니다. Android 휴대폰 또는 태블릿에서 인증서를 다운로드하여 설치합니다. 이제 Chrome은 Windows 및 Android에서 인증서를 신뢰합니다.
Windows dev box에서 openssl.exe를 얻는 가장 좋은 위치는 "c : \ Program Files \ Git \ usr \ bin \ openssl.exe"입니다.
에 MAC이 크롬 버전 67.0.3396.99부터 내 자체 서명 된 인증서는 작업을 중단했다.
여기에 쓰여진 모든 것이 작동하지 않았습니다.
최신 정보
내 접근 방식이 오늘 작동하는지 확인할 기회가있었습니다. :). 작동하지 않는 경우이 접근 방식을 사용하고 있는지 확인하십시오.
v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = <specify-the-same-common-name-that-you-used-while-generating-csr-in-the-last-step>
$
업데이트 종료
마지막으로 경우에만 안전한 녹색 볼 수 있었다 제거 에서 내 인증서 시스템을 , 그리고 추가 로 지역 키 체인. (있는 경우-먼저 드롭하십시오). 그것이 맞는지 확실하지 않지만 제 경우에는 크롬을 통해 인증서를 다운로드하고 생성 날짜가 오늘인지 확인했습니다. 그래서 방금 만든 날짜입니다.
누군가가 하루를 보내는 데 도움이되기를 바랍니다.
크롬을 업데이트하지 마십시오!
서버 localhost를 실행하려면 CN = localhost
및 DNS.1 = localhost
.
[req]
default_bits = 2048
default_md = sha256
distinguished_name = req_distinguished_name
prompt = no
prompt = no
x509_extensions = v3_req
[req_distinguished_name]
C = BR
CN = localhost
emailAddress=contact@example.com
L = Sao Paulo
O = example.com
OU = example.com
ST = Sao Paulo
[v3_req]
authorityKeyIdentifier = keyid, issuer
basicConstraints = CA:FALSE
extendedKeyUsage = serverAuth
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost