SubjectAltName이 포함 된 OpenSSL을 사용하여 자체 서명 된 인증서를 생성하려고합니다. 인증서에 대한 CSR을 생성하는 동안 OpenSSL x509의 v3 확장을 사용해야합니다. 나는 사용하고 있습니다 :
openssl req -new -x509 -v3 -key private.key -out certificate.pem -days 730
누군가 정확한 구문으로 나를 도울 수 있습니까?
SubjectAltName이 포함 된 OpenSSL을 사용하여 자체 서명 된 인증서를 생성하려고합니다. 인증서에 대한 CSR을 생성하는 동안 OpenSSL x509의 v3 확장을 사용해야합니다. 나는 사용하고 있습니다 :
openssl req -new -x509 -v3 -key private.key -out certificate.pem -days 730
누군가 정확한 구문으로 나를 도울 수 있습니까?
답변:
누군가 정확한 구문으로 나를 도울 수 있습니까?
3 단계 프로세스이며 openssl.cnf
파일 수정이 포함 됩니다. 명령 줄 옵션으로 만 수행 할 수 있지만 저는 그렇게하지 않습니다.
openssl.cnf
파일을 찾으십시오 . 다음 위치에있을 가능성이 높습니다 /usr/lib/ssl/openssl.cnf
.
$ find /usr/lib -name openssl.cnf
/usr/lib/openssl.cnf
/usr/lib/openssh/openssl.cnf
/usr/lib/ssl/openssl.cnf
내 데비안 시스템 /usr/lib/ssl/openssl.cnf
에서 내장 openssl
프로그램 이 사용 합니다. 최근 데비안 시스템에서는 다음 위치에 있습니다./etc/ssl/openssl.cnf
파일에 openssl.cnf
가짜 XXX
를 추가하고 openssl
질식 여부를 확인 하여 사용중인 것을 확인할 수 있습니다 .
먼저 req
매개 변수를 수정합니다 . 사용할 이름이 있는 alternate_names
섹션을 추가하십시오 openssl.cnf
. 기존 alternate_names
섹션 이 없으므로 추가하는 위치는 중요하지 않습니다.
[ alternate_names ]
DNS.1 = example.com
DNS.2 = www.example.com
DNS.3 = mail.example.com
DNS.4 = ftp.example.com
다음으로 기존 [ v3_ca ]
섹션에 다음을 추가합니다 . 정확한 문자열 검색 [ v3_ca ]
:
subjectAltName = @alternate_names
keyUsage
아래에서 다음으로 변경할 수 있습니다 [ v3_ca ]
.
keyUsage = digitalSignature, keyEncipherment
digitalSignature
및 keyEncipherment
서버 인증서 표준 요금입니다. 에 대해 걱정하지 마십시오 nonRepudiation
. 변호사가되고 싶어하는 컴퓨터 과학 관계자 / 걸들이 생각한 쓸모없는 부분입니다. 법적인 세계에서는 의미가 없습니다.
결국 IETF ( RFC 5280 ), 브라우저 및 CA는 빠르고 느슨하게 실행되므로 제공하는 키 사용은 중요하지 않을 것입니다.
둘째, 서명 매개 변수를 수정합니다. CA_default
섹션 아래에서이 줄을 찾습니다 .
# Extension copying option: use with caution.
# copy_extensions = copy
다음으로 변경하십시오.
# Extension copying option: use with caution.
copy_extensions = copy
이렇게하면 SAN이 인증서에 복사됩니다. DNS 이름을 복사하는 다른 방법은 손상되었습니다.
셋째, 자체 서명 된 인증서를 생성합니다.
$ openssl genrsa -out private.key 3072
$ openssl req -new -x509 -key private.key -sha256 -out certificate.pem -days 730
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
...
마지막으로 인증서를 검토합니다.
$ openssl x509 -in certificate.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 9647297427330319047 (0x85e215e5869042c7)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=MD, L=Baltimore, O=Test CA, Limited, CN=Test CA/emailAddress=test@example.com
Validity
Not Before: Feb 1 05:23:05 2014 GMT
Not After : Feb 1 05:23:05 2016 GMT
Subject: C=US, ST=MD, L=Baltimore, O=Test CA, Limited, CN=Test CA/emailAddress=test@example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (3072 bit)
Modulus:
00:e2:e9:0e:9a:b8:52:d4:91:cf:ed:33:53:8e:35:
...
d6:7d:ed:67:44:c3:65:38:5d:6c:94:e5:98:ab:8c:
72:1c:45:92:2c:88:a9:be:0b:f9
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
34:66:39:7C:EC:8B:70:80:9E:6F:95:89:DB:B5:B9:B8:D8:F8:AF:A4
X509v3 Authority Key Identifier:
keyid:34:66:39:7C:EC:8B:70:80:9E:6F:95:89:DB:B5:B9:B8:D8:F8:AF:A4
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign
X509v3 Subject Alternative Name:
DNS:example.com, DNS:www.example.com, DNS:mail.example.com, DNS:ftp.example.com
Signature Algorithm: sha256WithRSAEncryption
3b:28:fc:e3:b5:43:5a:d2:a0:b8:01:9b:fa:26:47:8e:5c:b7:
...
71:21:b9:1f:fa:30:19:8b:be:d2:19:5a:84:6c:81:82:95:ef:
8b:0a:bd:65:03:d1
openssl genrsa -out cert.key 3072 -nodes
openssl req -new -x509 -key cert.key -sha256 -config openssl.cnf -out cert.crt -days 730 -subj "/C=US/ST=private/L=province/O=city/CN=hostname.example.com"
IP
대신 사용 합니다. 구성 파일을 로컬로 복사 한 다음 . 그리고 주석을 제거해야 할 수도 있습니다 . DNS
alternate_names
-config my_config.cnf
req_extensions = v3_req