HTTPS是一种协议,等于HTTP+TLS(由于历史原因,SSL3.0之后就被TLS1.0替代了)。
openssl是一套开源工具集,主要有两个特性:
openssl是一套开源工具集,主要有两个特性:
- 实现了ssl2,ssl3,TLSv1,TLSv1.1,TLSv1.2协议。
- 实现目前常用的加密算法。
比如如果使用apache或者nginx,那么肯定是使用了openssl。保守估计至少70%以上的网站是使用openssl的。而windows系列
的服务器包括IIS,windows server等都是使用schannel,没有使用openssl,不会受heartbleed影响。
看到一个网友解释https与openssl的关系,感觉很恰当:
HTTPS与OpenSSL就是iPhone与富士康的关系。
openssl s_client -connect www.baidu.com:443 #可以查看到证书,想要得到证书,复制下来保存即可。
这只是拿的服务器的证书。
如果想要拿到证书列,怎么办?
openssl s_client -connect www.baidu.com:443 -showcerts
把证书赋复制另存为了baidu.pem ,在linux中如何查看呢?
#openssl x59 -in baidu.pem -text -noout #(证书解析器)查看证书详细的内容。
第一步:非对称秘钥的生产:
创建rsa
#openssl genrsa -out rsa.key 2048 #这个文件里面既有公钥,也有私钥
#openssl rsa -text -in rsa.key #读取这个rea.key
#openssl rsa -in rsa.key -pubout -out rea-public.key #导出public key
创建dsa
#openssl dsaparam -genkey 2048 | openssl dsa -out dsa.key #以dsa的加密方式创建。
创建ecdsa
#openssl ecparam -genkey -name secp256r1 | openssl ec -out ec.key #以ecdsa的加密方式创建
第二步:创建csr
#openssl req -new -key rsa.key -out rsa.csr
一步一步的填写输入,带有【】表示的是可选项。
#openssl req -text -in rsa.csr -noout #查看这个rsa.csr 文件
最后一步签名:
#openssl -x509 -req -days 365 -in rsa.csr -signkey rsa.key -out rsa_changtao.cer #有限期365天。
PEM格式可视,可以直接用编辑器打开,而原始的的der不行。
格式是可以互相转换的:
nginx中添加证书配置:
nignx -t #验证niginx的配置文件是否正确、
so_protocols 配置支持的ssl 版本
openssl s_client -connect www.baidu.com:443 -showcerts 可以用这个命令查看支持的ssl版本。
配置,支持的算法
查看支持的算法
openssl s_client connect www.baidu.com:443
openssl s_client connect www.baidu.com:443 -tls1 #测试tls1是否支持!
openssl s_client connect -help #查看帮助。
#利用 取反来测试是否支持。
#openssl ciphers -v #查看支持的cipher
#最后后跟算法的类型,查看是否支持,可以填写前几个字母,不必是全部 的
nmap -PN -p443 -sT —script ssl-enum-ciphers www.baidu.com