https://www.sslshopper.com/ar...html
最通用的SSL工具之一是OpenSSL,它是SSL协议的开源实现。几乎每一个平台都有OpenSSL版本,包括Windows,Linux和Mac OS X.OpenSSL一般用于为许多不一样平台(包括Apache)建立CSR和私钥。可是,它还有数百种不一样的功能,容许您查看CSR或证书的详细信息,比较证书的MD5哈希和私钥(以确保它们匹配),验证证书是否在任何网站上正确安装,并将证书转换为其余格式。能够在此处找到OpenSSL for Windows的编译版本。node
若是您不想打扰OpenSSL,可使用咱们的SSL证书工具执行许多相同的操做。下面,咱们列出了最多见的OpenSSL命令及其用法:nginx
这些命令容许您生成CSR,证书,私钥以及执行其余其余任务。web
编码:浏览器
echo "我是一片云 天空是我家\n朝迎旭日升 暮送夕阳下" | openssl enc -base64
输出:安全
5oiR5piv5LiA54mH5LqRIOWkqeepuuaYr+aIkeWutlxu5pyd6L+O5pet5pel5Y2H
44CA5pqu6YCB5aSV6Ziz5LiLCg==服务器
对上面的字符串解码app
echo '5oiR5piv5LiA54mH5LqRIOWkqeepuuaYr+aIkeWutlxu5pyd6L+O5pet5pel5Y2H
44CA5pqu6YCB5aSV6Ziz5LiLCg==' |openssl enc -base64 -d
输出:dom
我是一片云 天空是我家\n朝迎旭日升 暮送夕阳下
注意:这里编码和解码都是用的enc
命令,只是解码加了-d
参数。
造成摘要:webapp
echo "我是一片云 天空是我家 朝迎旭日升 暮送夕阳下" | openssl md5
输出
(stdin)= 2418617a0586d93db1db5e43260a43bb
校验摘要:
再生成一次,对比生成的字符串。
用于基本验证访问的服务器密码, 密码只能是8位, 多了会有警告。
openssl passwd -crypt yourpass
会生成
U0tfb.p0Pit5I
重复执行上面的指令时密码会有变化。因此密码是有随机变量在里面。
保存到 ·/etc/nginx/conf.d/pass`文件中
$ cat /etc/nginx/conf.d/pass youradmin:U0tfb.p0Pit5I
密码文件是 用户名:加密密码
的格式存储的。
Nginx服务器的配置
server { server_name yourserver.cn; root /var/www/webapps/; index index.html index.htm; location / { auth_basic "server login auth"; auth_basic_user_file conf.d/pass; ...
这样就能经过基本验证, 保护服务器的内容只能在输入密码的状况下进行访问。
证书请求:
openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key
随后能够把证书请求发给颁发机构来完成证书的生成(准备好钱哟)。
若是仅是测试用,能够生成自签名证书(不花钱,但要手动导入浏览器)
能够经过如下命令执行此操做:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
若是您不想使用密码来保护私钥,也能够添加-nodes
(的缩写no DES
)。不然,它将提示您输入“至少4个字符”的密码。
days
您能够将参数(365天)替换为任何数字以修改到期日期。而后,它将提示您输入“国家名称”之类的内容,可是您只需点击Enter并接受默认值便可。
添加-subj '/CN=localhost'
以消除关于证书内容的问题(替换localhost
为所需的域)。
对于在自动化中使用此工具的其余人,这里是该主题的全部经常使用参数:-subj "/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=www.example.com"
除非您之前将自签名证书导入浏览器,不然它们不会与任何第三方进行验证。若是须要更高的安全性,则应使用由证书颁发机构(CA)签名的证书。
若是没钱(好比我),能够用 let's encrypt 。只要您的Web服务器能够经过Internet上的端口80上的FQDN对其进行访问,您就可使用LetsEncrypt并得到免费的完整CA证书(有效期为90天,能够自动更新),该证书不会给出任何浏览器警告/消息。不过这已经和OpenSSL没啥关系了。
为现有私钥生成证书签名请求(CSR)
openssl req -key mydomain.key -new -out mydomain.csr
根据现有证书生成证书签名请求
openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key
从私钥中删除密码
openssl rsa -in privateKey.pem -out newPrivateKey.pem
若是须要检查证书,CSR或私钥中的信息,请使用这些命令。您还可使用咱们的在线工具检查CSR并检查证书。
检查证书签名请求(CSR)
openssl req -text -noout -verify -in CSR.csr
检查私钥
openssl rsa -in privateKey.key -check
检查证书
openssl x509 -in certificate.crt -text -noout
检查PKCS#12文件(.pfx或.p12)
openssl pkcs12 -info -in keyStore.p12
若是您收到的错误是私有证书与证书不匹配,或者您安装到站点的证书不受信任,请尝试如下命令之一。若是您要验证是否正确安装了SSL证书,请务必查看 SSL。
检查公钥的MD5哈希,以确保它与CSR或私钥中的内容匹配
openssl x509 -noout -modulus -in certificate.crt | openssl md5 openssl rsa -noout -modulus -in privateKey.key | openssl md5 openssl req -noout -modulus -in CSR.csr | openssl md5
检查SSL链接。应显示全部证书(包括中间体)
openssl s_client -host bixuebihui.com -port 443
这些命令容许您将证书和密钥转换为不一样的格式,以使它们与特定类型的服务器或软件兼容。例如,您能够将能够与Apache一块儿使用的普通PEM文件转换为PFX(PKCS#12)文件,并将其与Tomcat或IIS一块儿使用。使用咱们的SSL转换器转换证书而不会弄乱OpenSSL。
将DER文件(.crt .cer .der)转换为PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
将PEM文件转换为DER
openssl x509 -outform der -in certificate.pem -out certificate.der
将包含私钥和证书的PKCS#12文件(.pfx .p12 )转换为PEM
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
您能够添加-nocerts
以仅输出私钥或添加-nokeys
以仅输出证书。
将PEM证书文件和私钥转换为PKCS#12(.pfx .p12)
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
若是您还知道有啥有趣的用法,欢迎评论补充。