一、实验环境
操作系统:CentOS7.5
serverA: 192.168.1.104 ,虚拟机上运行java服务nexus
serverB: 192.168.1.103,虚拟机上运行nginx
test: 192.168.1.106,虚拟机上装有 openjdk和openssl
二、关闭防火墙
在serverA和serveB
# systemctl stop firewalld
# systemctl disable firewalld
三、软件安装和服务状态查询
在serverA
# systemctl status nexus
# ss -tan
在server B
# systemctl status nginx
# ss -tan
四、 获取keytool证书
# openssl s_client --help
# man openssl
s_client,实现了通用的SSL / TLS客户端,该客户端可以建立与使用SSL / TLS的远程服务器的透明连接。 它仅用于测试目的,仅提供基本的接口功能,但内部大部分使用OpenSSL ssl库的所有功能。
s_server,实现了通用的SSL / TLS服务器,该服务器接受来自使用SSL / TLS的远程客户端的连接。 它仅用于测试目的,仅提供基本的接口功能,但内部大部分使用OpenSSL ssl库的所有功能。 它既提供了自己的面向命令行的协议来测试SSL功能,又提供了简单的HTTP响应工具来模拟支持SSL / TLS的Web服务器。
s_client为一个SSL/TLS客户端程序,与s_server对应,它不仅能与s_server进行通信,也能与任何使用ssl协议的其他服务程序进行通信
s_server是openssl提供的一个SSL服务程序。使用此程序前,需要生成各种证书。本命令可以用来测试ssl客户端,比如各种浏览器的https协议支持
在 test:
# keytool -printcert -sslserver 192.168.1.104:8443 -rfc
# keytool -printcert -sslserver 192.168.1.104:8443 -rfc > nexus.crt
# openssl s_client -showcerts -connect 192.168.1.104:8443 </dev/null
五、获取openSSL证书
# openssl s_client -showcerts -connect 192.168.1.103:443 </dev/null
用sed从文本中截取指定匹配行
通过相关命令获取了web的相关信息,但只想截取证书相关内容,怎么办?
# sed -n '/^起始行/,/^结束行/p' FILE_NAME
# curl --insecure -v https://www.baidu.com 2>&1
# curl --insecure -v https://www.baidu.com 2>&1 | awk 'BEGIN { cert=0 } /^\* Server certificate:/ { cert=1 } /^\*/ { if (cert) print }'
# curl --insecure -v https://www.baidu.com 2>&1 | awk 'BEGIN { cert=0 } /^\* Server certificate:/ { cert=1 } /^\*/ { if (cert) print }' | grep -v "left intact"
# openssl s_client -showcerts -connect www.baidu.com:443 </dev/null > cert.txt 2>&1
# sed -n '/^-----BEGIN CERTIFICATE-----/,/^-----END CERTIFICATE-----/p' cert.txt
# openssl s_client -showcerts -connect www.baidu.com:443 </dev/null 2>&1 | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p'
五、参考
OpenSSL s_server
https://www.openssl.org/docs/manmaster/man1/s_server.html
OpenSSL s_client
https://www.openssl.org/docs/manmaster/man1/s_client.html
Using openssl s_server and openssl s_client to test client certificates
http://blog.808inorganic.com/2017/01/using-openssl-sserver-and-openssl.html
Verify Incoming SSL Using OpenSSL S_Server
https://stackoverflow.com/questions/16646557/verify-incoming-ssl-using-openssl-s-server
Linu上使用openssl从服务器获取证书
https://codeday.me/bug/20170502/13843.html
openSSL s_server / s_client
https://www.netkiller.cn/cryptography/openssl/s_server.html
https://unix.stackexchange.com/questions/230887/what-does-dev-null-mean
https://unix.stackexchange.com/questions/230330/what-does-do
用sed从文本中截取指定匹配行
https://blog.csdn.net/lzx_bupt/article/details/7195340
https connection using CURL from command line
https://stackoverflow.com/questions/10079707/https-connection-using-curl-from-command-line