최근에 Chrome이 자체 서명 된 SSL 인증서 작업을 중단하고 안전하지 않다고 생각합니다. DevTools | Security
탭 에서 인증서를 보면
주체 대체 이름 없음이 사이트의 인증서에 도메인 이름 또는 IP 주소가 포함 된 주체 대체 이름 확장이 없습니다.
인증서 오류 사이트의 인증서 체인 (net :: ERR_CERT_COMMON_NAME_INVALID)에 문제가 있습니다.
이 문제를 어떻게 해결할 수 있습니까?
답변
이 문제를 해결하려면 openssl
기본적으로 인증서를 생성 할 때 추가 매개 변수를 제공해야합니다.
-sha256 -extfile v3.ext
경우 v3.ext
에 그렇게 같은 파일이며, %%DOMAIN%%
당신이 당신으로 사용하는 것과 동일한 이름으로 대체 Common Name
. 여기 와 여기에 더 많은 정보 가 있습니다 . 일반적으로 인증서를 생성하려는 도메인에 Common Name
및 %%DOMAIN%%
을 설정합니다 . 따라서이면 www.mysupersite.com
둘 다에 사용할 것입니다.
v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = %%DOMAIN%%
참고 :이 문제를 해결 하고 Chrome, Safari 및 Java 클라이언트에서 사용할 완전히 신뢰할 수있는 SSL 인증서를 생성 하는 스크립트는 여기에서 찾을 수 있습니다.
또 다른 참고 사항 : 자체 서명 된 인증서를 볼 때 Chrome에서 오류가 발생하지 않도록하는 것 뿐 이라면 여기에 설명 된대로 특수한 명령 줄 옵션으로 시작하여 Chrome이 모든 사이트에 대한 모든 SSL 오류를 무시하도록 지시 할 수 있습니다. 수퍼 유저
답변
다음 솔루션은 크롬 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
답변
Bash 스크립트
내가 만든 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와 같은 다른 속성을 추가하여 프롬프트없이 인증서를 생성 할 수 있습니다.
답변
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
답변
v3.ext 파일의 DNS.1 값을 변경하여 (net :: ERR_CERT_AUTHORITY_INVALID)를 제거 할 수있었습니다.
[alt_names] DNS.1 = domainname.com
자신의 도메인으로 domainname.com을 변경하십시오.
