Chrome과 Mozilla에서 허용되는 로컬 호스트에서 자체 서명된 인증서를 생성하는 현대적인 방법을 제안할 수 있는 사람이 있나요?
openssl 빌드를 시도했지만 Mozilla는 게시자를 신뢰할 수 없다고 불평했습니다.
센토스 7, nginx
답변1
경고: 자체 인증 기관을 운영하는 지뢰밭에 뛰어들기 전에 보안에 미치는 영향을 조사하고 싶을 수도 있습니다!
하지만 꼭 해야 한다면 https://localhost/
경고 메시지 없이 신속하고 더러운 CA를 읽어보세요...
다음 텍스트 파일을 만듭니다.
# OpenSSL configuration for Root CA
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = Test Root CA
[ x509_ext ]
basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
다른 이름으로 저장한 root.cnf
후 요청 생성:
$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf
root.cer
이렇게 하면 비밀로 유지해야 하는 루트 CA 인증서( )와 루트 CA 개인 키( )가 생성됩니다 . root.key
개인 키 비밀번호를 묻는 메시지가 표시됩니다. 강력한 비밀번호를 선택했는지 확인하세요.
이제 서버 인증서에 대한 구성 파일을 만듭니다.
# OpenSSL configuration for end-entity cert
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = localhost
[ x509_ext ]
keyUsage=critical,digitalSignature,keyAgreement
subjectAltName = @alt_names
# Multiple Alternate Names are possible
[alt_names]
DNS.1 = localhost
# DNS.2 = altName.example.com
다른 이름으로 저장 server.cnf
하고 요청을 생성합니다.
openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf
server.key
위의 내용은 보호해야 하는 또 다른 개인 키( )를 생성합니다 . 이 경우 키는 비밀번호로 보호되지 않지만 -nodes
옵션을 제거하여 비밀번호를 추가할 수 있습니다.
마지막으로 편의를 위해 새 루트 CA와 파일의 확장자를 사용하여 요청에 서명합니다 server.cnf
.
$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext
참고: 이 옵션에 대해 임의의 숫자를 선택하십시오 -set_serial
.
루트 CA를 생성할 때 입력한 비밀번호를 입력하라는 메시지가 표시됩니다.
server.cer
서버 인증서( )가 생성됩니다.
root.cer
이제 브라우저가 새 CA를 신뢰하도록 루트 CA 인증서( )를 Firefox의 신뢰 앵커 저장소에 추가하세요.
OpenSSL을 임시 웹 서버로 사용하여 테스트를 실행합니다.
$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www
참고: 이미 포트 443에서 실행 중인 서버가 있는 경우 오류가 발생할 수 있습니다. 이 경우 실행 중인 서버를 중지하거나 위의 포트 번호 끝을 (예:)로 변경하여 사용하지 않는 다른 포트로 변경하십시오.-accept 8443 -www
Firefox를 사용하여 탐색할 때 https://localhost
(또는 https://localhost:8443
위에서 포트 번호를 변경한 경우) 이제 OpenSSL 설치에서 제공할 수 있는 경고 및 암호 목록이 표시되지 않습니다.
결과에 만족하면 원래 웹 서버에 server.key
및를 추가하고 그에 따라 구성하십시오.server.cer