«   2018/12   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
Archives
Today
423
Total
1,190,724
안정적인 DNS서비스 DNSEver
관리 메뉴

Blue Breeze

nginx Verify return code: 21 (unable to verify the first certificate) 본문

Server Side/Nginx

nginx Verify return code: 21 (unable to verify the first certificate)

푸른바람 C/H 2017.03.06 08:30


인증서 파일 설명

파일 종류 설명

.crt - 서버응답인증서 (CA에서 발급된 인증서 PEM 텍스트)
.key - CSR 자동생성 신청시, 같이 자동 생성된 개인키 (SHA1 알고리즘, PEM 텍스트, 패스워드 없음)
.pfx - 개인키+서버응답인증서 패키징된 인증서 (설치시 암호 필요)
.pfx.txt - pfx 를 이용해서 인증서 설치시 필요한 해제 암호
.Chain.zip - 설치가 필수인 체인 인증서 모음 압축 파일 

주요 상품별 체인 인증서

[Positive 계열 상품]
루트 인증서 : AddTrustExternalCARoot.crt
체인 인증서 : PositiveSSLCA2.crt

[Comodo 계열 상품]
루트 인증서 : AddTrustExternalCARoot.crt
체인 인증서 : COMODOSSLCA.crt

[Free 30 Days 상품]
루트 인증서 : AddTrustExternalCARoot.crt
체인 인증서 : UTNAddTrustSGCCA.crt
체인 인증서 : ComodoUTNSGCCA.crt
체인 인증서 : EssentialSSLCA_2.crt

[EV 상품]
루트 인증서 : AddTrustExternalCARoot.crt
체인 인증서 : COMODOAddTrustServerCA.crt
체인 인증서 : COMODOExtendedValidationSecureServerCA.crt

Nginx SSL 설정

ssl on;
ssl_certificate "/etc/pki/nginx/domain.crt";
ssl_certificate_key "/etc/pki/nginx/domain.ca2";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout  10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

인증서 테스트

openssl s_client -showcerts -connect chat.domaon.com:443
depth=0 /OU=Domain Control Validated/OU=Hosted by Korea Information Certificate Authority, Inc./OU=PositiveSSL Wildcard/CN=*.happytalk.io
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/OU=Hosted by Korea Information Certificate Authority, Inc./OU=PositiveSSL Wildcard/CN=*.happytalk.io
verify error:num=27:certificate not trusted
verify return:1
depth=0 /OU=Domain Control Validated/OU=Hosted by Korea Information Certificate Authority, Inc./OU=PositiveSSL Wildcard/CN=*.happytalk.io
verify error:num=21:unable to verify the first certificate
verify return:1
...
Verify return code: 21 (unable to verify the first certificate)
...

cat cert.pem RootCA.crt ChainCA.crt > new_cert.pem

systemctl restart nginx.service; systemctl status nginx.service; openssl s_client -showcerts -connect chat.domaon.com:443
...
Verify return code: 21 (unable to verify the first certificate)
...

cat doamin.crt COMODORSADomainValidationSecureServerCA.crt  COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > domain.ssl.crt
systemctl restart nginx.service; systemctl status nginx.service; openssl s_client -showcerts -connect chat.domaon.com:443
...
Verify return code: 21 (unable to verify the first certificate)
...

cat domain.crt rsa-dv.chain-bundle.pem AddTrustExternalCARoot.crt > domain.ca2 #설정오류
cat domain.key rsa-dv.chain-bundle.pem AddTrustExternalCARoot.crt > domain.ca2
cat domain.crt domain.key rsa-dv.chain-bundle.pem AddTrustExternalCARoot.crt > domain.ca2


# https://www.securesign.kr/tools/online-check-ssl-installation? 에서 확인 결과 Chain Trusted 오류 확인
# 아....... 음...... 이건 좀 더 시간이 필요할 거 같다.
# 결국 클라이언트에서 인증서 검증을 하지 않는 옵션사용

프로젝트 시간이 더 필요해...

0 Comments
댓글쓰기 폼