반응형
프록시를 사용하는 openssl s_client
openssl s_client -connect some.https.server:443 -showcerts
서버의 인증서와 인증서 체인을 검사 할 때 실행할 수있는 좋은 명령입니다.
HTTP / HTTPS 프록시 뒤에있을 때이 명령을 실행하는 방법이 있습니까?
공식적으로 아닙니다.
하지만 여기에 패치 http://rt.openssl.org/Ticket/Display.html?id=2651&user=guest&pass=guest
proxytunnel 을 사용할 수 있습니다 .
proxytunnel -p yourproxy:8080 -d www.google.com:443 -a 7000
그런 다음 이렇게 할 수 있습니다.
openssl s_client -connect localhost:7000 -showcerts
이것이 당신을 도울 수 있기를 바랍니다!
2015 년 5 월 이후 여기에 오는 모든 사용자 : 다음 openssl 릴리스에 포함될 새로운 "-proxy"옵션이 있습니다. https://rt.openssl.org/Ticket/Display.html?id=2651&user= guest & pass = guest
openssl v1.1.0 이후
C:\openssl>openssl version
OpenSSL 1.1.0g 2 Nov 2017
C:\openssl>openssl s_client -proxy 192.168.103.115:3128 -connect www.google.com -CAfile C:\TEMP\internalCA.crt
CONNECTED(00000088)
depth=2 DC = com, DC = xxxx, CN = xxxx CA interne
verify return:1
depth=1 C = FR, L = CROIX, CN = svproxysg1, emailAddress = xxxx@xxxx.xx
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = www.google.com
verify return:1
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
i:/C=xxxx/L=xxxx/CN=svproxysg1/emailAddress=xxxx@xxxx.xx
1 s:/C=xxxx/L=xxxx/CN=svproxysg1/emailAddress=xxxx@xxxx.xx
i:/DC=com/DC=xxxxx/CN=xxxxx CA interne
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDkTCCAnmgAwIBAgIJAIv4/hQAAAAAMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV
BAYTAkZSMQ4wDAYDVQQHEwVDUk9JWDETMBEGA1UEAxMKc3Zwcm94eXNnMTEeMBwG
openssl v1.1.0을 사용해도 프록시를 통과하는 데 몇 가지 문제가있었습니다. 예를 들어 s_client: HTTP CONNECT failed: 400 Bad Request
SSL-Handshake를 표시하기 위해 최소한의 Java 클래스를 작성해야했습니다.
public static void main(String[] args) throws IOException, URISyntaxException {
HttpHost proxy = new HttpHost("proxy.my.company", 8080);
DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
CloseableHttpClient httpclient = HttpClients.custom()
.setRoutePlanner(routePlanner)
.build();
URI uri = new URIBuilder()
.setScheme("https")
.setHost("www.myhost.com")
.build();
HttpGet httpget = new HttpGet(uri);
httpclient.execute(httpget);
}
다음과 같은 종속성 :
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
<type>jar</type>
</dependency>
Java SSL 로깅을 켜서 실행할 수 있습니다 .
이것은 다음과 같은 멋진 출력을 생성합니다.
trustStore provider is :
init truststore
adding as trusted cert:
Subject: CN=Equifax Secure Global eBusiness CA-1, O=Equifax Secure Inc., C=US
Issuer: CN=Equifax Secure Global eBusiness CA-1, O=Equifax Secure Inc., C=US
Algorithm: RSA; Serial number: 0xc3517
Valid from Mon Jun 21 06:00:00 CEST 1999 until Mon Jun 22 06:00:00 CEST 2020
adding as trusted cert:
Subject: CN=SecureTrust CA, O=SecureTrust Corporation, C=US
Issuer: CN=SecureTrust CA, O=SecureTrust Corporation, C=US
(....)
참고 URL : https://stackoverflow.com/questions/3220419/openssl-s-client-using-a-proxy
반응형
'Programing' 카테고리의 다른 글
XML에 중첩 된 주석? (0) | 2020.12.05 |
---|---|
Android 에뮬레이터를 빠르게 조정하여 조정할 수 있습니까? (0) | 2020.12.05 |
DbEntityEntry를 조롱 또는 위조하거나 새 DbEntityEntry 생성 (0) | 2020.12.05 |
콘솔에서 자바 스크립트 함수 호출 (0) | 2020.12.05 |
CSS에서 @media 규칙 중첩 (0) | 2020.12.05 |