Chrome에서 녹색 HTTPS 잠금 아이콘을 클릭하면 인증서 세부 정보가 포함 된 창이 열립니다.
cURL로 동일하게 시도했을 때 몇 가지 정보 만 얻었습니다.
$ curl -vvI https://gnupg.org
* Rebuilt URL to: https://gnupg.org/
* Hostname was NOT found in DNS cache
* Trying 217.69.76.60...
* Connected to gnupg.org (217.69.76.60) port 443 (#0)
* TLS 1.2 connection using TLS_DHE_RSA_WITH_AES_128_CBC_SHA
* Server certificate: gnupg.org
* Server certificate: Gandi Standard SSL CA
* Server certificate: UTN-USERFirst-Hardware
> HEAD / HTTP/1.1
> User-Agent: curl/7.37.1
> Host: gnupg.org
> Accept: */*
전체 인증서 정보를 명령 줄 도구 (cURL 또는 기타)로 얻는 방법에 대한 아이디어가 있습니까?
답변
다음과 같은 목적으로 OpenSSL을 사용할 수 있어야합니다.
echo | openssl s_client -showcerts -servername gnupg.org -connect gnupg.org:443 2>/dev/null | openssl x509 -inform pem -noout -text
이 명령은 원하는 웹 사이트에 연결하고 PEM 형식의 인증서를 세부 정보를 읽고 구문 분석하는 다른 openssl 명령에 파이프합니다.
( SNI 지원을 요청 -servername
하려면 “중복” 매개 변수가 필요합니다 openssl
.)
답변
간단한 솔루션
그것은 나의 일상적인 대본이다 :
curl --insecure -v https://www.google.com 2>&1 | awk 'BEGIN { cert=0 } /^\* SSL connection/ { cert=1 } /^\*/ { if (cert) print }'
산출:
* SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
* server certificate verification SKIPPED
* server certificate status verification SKIPPED
* common name: www.google.com (matched)
* server certificate expiration date OK
* server certificate activation date OK
* certificate public key: RSA
* certificate version: #3
* subject: C=US,ST=California,L=Mountain View,O=Google Inc,CN=www.google.com
* start date: Wed, 24 May 2017 17:39:15 GMT
* expire date: Wed, 16 Aug 2017 17:13:00 GMT
* issuer: C=US,O=Google Inc,CN=Google Internet Authority G2
* compression: NULL
* ALPN, server accepted to use http/1.1
* Connection #0 to host www.google.com left intact
답변
원하는 정보의 종류에 따라 다르지만
openssl s_client -showcerts -connect gnupg.org:443
Chrome이 제시하는 것처럼 사람이 읽을 수는 없지만 가장 많이 제공해야합니다.
답변
nmap -p 443 --script ssl-cert gnupg.org
-p 443
지정 포트 443 만 스캔합니다. 모든 포트가 생략되면 스캔되고 발견 된 SSL 서비스에 대한 인증서 세부 사항이 표시됩니다. 이 스크립트--script ssl-cert
는 Nmap 스크립팅 엔진 에 ssl-cert
스크립트 만 실행하도록 지시합니다 . 문서에서이 스크립트는 “(r) 서버의 SSL 인증서를 가져옵니다. 인증서에 대해 인쇄되는 정보의 양은 상세 수준에 따라 다릅니다.”
샘플 출력 :
Starting Nmap 7.40 ( https://nmap.org ) at 2017-11-01 13:35 PDT
Nmap scan report for gnupg.org (217.69.76.60)
Host is up (0.16s latency).
Other addresses for gnupg.org (not scanned): (null)
rDNS record for 217.69.76.60: www.gnupg.org
PORT STATE SERVICE
443/tcp open https
| ssl-cert: Subject: commonName=gnupg.org
| Subject Alternative Name: DNS:gnupg.org, DNS:www.gnupg.org
| Issuer: commonName=Gandi Standard SSL CA 2/organizationName=Gandi/stateOrProvinceName=Paris/countryName=FR
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2015-12-21T00:00:00
| Not valid after: 2018-03-19T23:59:59
| MD5: c3a7 e0ed 388f 87cb ec7f fd3e 71f2 1c3e
|_SHA-1: 5196 ecf5 7aed 139f a511 735b bfb5 7534 df63 41ba
Nmap done: 1 IP address (1 host up) scanned in 2.31 seconds
답변
SSL 인증서 세부 정보를 확인하기 위해 다음 명령 줄 도구를 사용할 수있게되었습니다.
https://github.com/azet/tls_tools
그것은 당신이 인증서 표시를 다시 발행하거나 기존의 유효성을 검사하고, 또한 적은 종속성을위한 올바른 모든 정보가 한 번 확인 중대 와 는 별도의 설정이 필요하지 않습니다를.
출력의 처음 몇 줄은 다음과 같습니다.
$ ./check_certificate_chain.py gnupg.org 443
>> Certificate Chain:
[+]* OU=Domain Control Validated, OU=Gandi Standard SSL, CN=gnupg.org
[+]** C=FR, O=GANDI SAS, CN=Gandi Standard SSL CA
[+]*** C=US, ST=UT, L=Salt Lake City, O=The USERTRUST Network, OU=http://www.usertrust.com, CN=UTN-USERFirst-Hardware
>> Certificate Information:
................................................................................
- [Subject]: OU=Domain Control Validated, OU=Gandi Standard SSL, CN=gnupg.org
- [Issuer]: C=FR, O=GANDI SAS, CN=Gandi Standard SSL CA
- [Valid from]: Mar 18 00:00:00 2014 GMT
- [Valid until]: Mar 18 23:59:59 2016 GMT
- [Authority]: Is not a CA
- [Version]: 2
- [Serial No.]: 43845251655098616578492338727643475746
- [X.509 Extension Details]:
-- [x509_authorityKeyIdentifier]:
keyid:B6:A8:FF:A2:A8:2F:D0:A6:CD:4B:B1:68:F3:E7:50:10:31:A7:79:21
그 결과 뒤에는 동일한 수준의 전체 인증서 체인이 이어집니다.
openssl의 s_client와 같은 ssl 중심 cli 도구 대신 내가 좋아하는 것은 대부분 우리가 필요로하는 하나의 일을하려고합니다. 물론 openssl은 더 유연합니다 (예 : clientcerts, 이상한 포트의 imaps 확인 등). 그러나 항상 그런 것은 아닙니다.
또는 파고 들어가고 더 많은 기능을 감상 할 시간이 있다면 sslyze라는 더 큰 도구가 있습니다 (종속성 및 설치 이후로 사용하지 않음 …)
답변
완전성 : 시스템에 Java 7 이상을 설치 한 경우
keytool -printcert -sslserver $host[:$port]
쇼 체인 주로 오히려 추한 형식의 거의 모든 세부 사항 (제공하면서).
시스템에 Java를 설치 했는지 여부 는 대답하지 않습니다.
답변
나는 이것을 위해 쉘 스크립트를 사용한다. openssl 명령의 래퍼 일뿐이므로 구문을 기억하지 않아도됩니다.
일반적으로 관심있는 대부분의 인증서 정보를 구문 분석하거나 원시 openssl 출력을 표시하는 옵션을 제공합니다.
로컬 인증서 파일 또는 원격 서버를 쿼리 할 수 있습니다.
용법:
$ ssl-cert-info --help
Usage: ssl-cert-info [options]
This shell script is a simple wrapper around the openssl binary. It uses
s_client to get certificate information from remote hosts, or x509 for local
certificate files. It can parse out some of the openssl output or just dump all
of it as text.
Options:
--all-info Print all output, including boring things like Modulus and
Exponent.
--alt Print Subject Alternative Names. These will be typically be
additional hostnames that the certificate is valid for.
--cn Print commonName from Subject. This is typically the host for
which the certificate was issued.
--debug Print additional info that might be helpful when debugging this
script.
--end Print certificate expiration date. For additional functionality
related to certificate expiration, take a look at this script:
"http://prefetch.net/code/ssl-cert-check".
--dates Print start and end dates of when the certificate is valid.
--file Use a local certificate file for input.
--help Print this help message.
--host Fetch the certificate from this remote host.
--issuer Print the certificate issuer.
--most-info Print almost everything. Skip boring things like Modulus and
Exponent.
--option Pass any openssl option through to openssl to get its raw
output.
--port Use this port when conneting to remote host. If ommitted, port
defaults to 443.
--subject Print the certificate Subject -- typically address and org name.
Examples:
1. Print a list of all hostnames that the certificate used by amazon.com
is valid for.
ssl-cert-info --host amazon.com --alt
DNS:uedata.amazon.com
DNS:amazon.com
DNS:amzn.com
DNS:www.amzn.com
DNS:www.amazon.com
2. Print issuer of certificate used by smtp.gmail.com. Fetch certficate info
over port 465.
ssl-cert-info --host smtp.gmail.com --port 465 --issuer
issuer=
countryName = US
organizationName = Google Inc
commonName = Google Internet Authority G2
3. Print valid dates for the certificate, using a local file as the source of
certificate data. Dates are formatted using the date command and display
time in your local timezone instead of GMT.
ssl-cert-info --file /path/to/file.crt --dates
valid from: 2014-02-04 16:00:00 PST
valid till: 2017-02-04 15:59:59 PST
4. Print certificate serial number. This script doesn't have a special option
to parse out the serial number, so will use the generic --option flag to
pass '-serial' through to openssl.
ssl-cert-info --host gmail.com --option -serial
serial=4BF004B4DDC9C2F8
여기에서 스크립트를 얻을 수 있습니다 : http://giantdorks.org/alain/shell-script-to-check-ssl-certificate-info-like-expiration-date-and-subject/