title: linux-openssl
“专业、务实、高效、创新、把客户的事当成自己的事”是我们每一个人一直以来坚持追求的企业文化。 创新互联公司是您可以信赖的网站建设服务商、专业的互联网服务提供商! 专注于网站制作、做网站、软件开发、设计服务业务。我们始终坚持以客户需求为导向,结合用户体验与视觉传达,提供有针对性的项目解决方案,提供专业性的建议,创新互联建站将不断地超越自我,追逐市场,引领市场!
date: 2020-09-16 11:02:15
categories:
{% note info %}
OpenSSL是一个健壮的、商业级的、功能齐全的开源工具包,用于传输层安全(TLS)协议,以前称为安全套接字层(Secure Sockets Layer, SSL)协议。协议实现基于全强度通用密码库,也可以单独使用。
openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准实现和PKCS12个人数字证书格式实现等功能。
span style="color:red;"项目地址/span span style="color:red;"官方网址/span span style="color:red;"手册/span
{% endnote %}
{% tabs configtab, 1 %}
对称算法使用一个密钥。给定一个明文和一个密钥,加密产生密文,其长度和明文大致相同。解密时,使用读密钥与加密密钥相同。
ECB\CBC\CFB\OFB
摘要算法是一种能产生特殊输出格式的算法,这种算法的特点是:无论用户输入什么长度的原始数据,经过计算后输出的密文都是固定长度的,这种算法的原理是根据一定的运算规则对原数据进行某种形式的提取,这种提取就是摘要,被摘要的数据内容与原数据有密切联系,只要原数据稍有改变,输出的“摘要”便完全不同,因此,基于这种原理的算法便能对数据完整性提供较为健全的保障。但是,由于输出的密文是提取原数据经过处理的定长值,所以它已经不能还原为原数据,即消息摘要算法是不可逆的,理论上无法通过反向运算取得原数据内容,因此它通常只能被用来做数据完整性验证。
如今常用的“消息摘要”算法经历了多年验证发展而保留下来的算法已经不多,这其中包括MD2、MD4、MD5、SHA、SHA-1/256/383/512等。
常用的摘要算法主要有MD5和SHA1。MD5的输出结果为16字节,sha1的输出结果为20字节。
在公钥密码系统中,加密和解密使用的是不同的密钥,这两个密钥之间存在着相互依存关系:即用其中任一个密钥加密的信息只能用另一个密钥进行解密。这使得通信双方无需事先交换密钥就可进行保密通信。其中加密密钥和算法是对外公开的,人人都可以通过这个密钥加密文件然后发给收信者,这个加密密钥又称为公钥;而收信者收到加密文件后,它可以使用他的解密密钥解密,这个密钥是由他自己私人掌管的,并不需要分发,因此又成称为私钥,这就解决了密钥分发的问题。
主要的公钥算法有:RSA、DSA、DH和ECC。
Openssl中大量用到了回调函数。回调函数一般定义在数据结构中,是一个函数指针。通过回调函数,客户可以自行编写函数,让openssl函数来调用它,即用户调用openssl提供的函数,openssl函数再回调用户提供的函数。这样方便了用户对openssl函数操作的控制。在openssl实现函数中,它一般会实现一个默认的函数来进行处理,如果用户不设置回调函数,则采用它默认的函数。
{% endtabs %}
我们首先要设置 openssl 的全局配置文件
在debian下他的配置文件在 /usr/lib/ssl/openssl.cnf
需要修改的内容:
具体怎么改可以自己决定
在CA目录下创建两个初始文件:
为了安全起见,修改cakey.pem私钥文件权限为600或400,也可以使用子shell生成( umask 077; openssl genrsa -out private/cakey.pem 2048 ),下面不再重复。
使用req命令生成自签证书:
然后会有提示,之后再出现也是这样填,不再重复
以上都是在CA服务器上做的操作,而且只需进行一次,现在转到nginx服务器上执行:
这里测试的时候CA中心与要申请证书的服务器是同一个。
另外在极少数情况下,上面的命令生成的证书不能识别,试试下面的命令:
上面签发过程其实默认使用了-cert cacert.pem -keyfile cakey.pem,这两个文件就是前两步生成的位于/etc/pki/CA下的根密钥和根证书。将生成的crt证书发回nginx服务器使用。
到此我们已经拥有了建立ssl安全连接所需要的所有文件,并且服务器的crt和key都位于配置的目录下,剩下的是如何使用证书的问题。
因为这是个人生成的证书,浏览器第一次可能会报错,只要添加信任之后就可以正常使用了!
一、创建Azure Key Vault
创建Key Vault和Linux安装SSL之前,大家需要先使用az group create来创建资源。比如创建名为“myResourceGroupSecureWeb”的资源组,需要先复制Azure CLI到对应文件夹中,然后再使用az keyvault create创建Key Vault,并在部署VM时启用该Key Vault。
每一个Key Vault都需要具备唯一的名称,而且全部都是小写字母,然后将名称替换为自己唯一的Key Vault名称,生成证书并存储在Key Vault中。为了让网站SSL安全使用使用,大家需要在Linux安装SSL导入时由受信任的程序提供签名才算是有效证书。
二、准备用于VM的证书
若要在VM创建过程中使用上述证书,大家需要使用az keyvault secret list-versions获取证书的唯一ID,然后再通过az vm format-secret转换该证书。具体操作为创建cloud-init配置以保护NGINX,在首次启动VM时对其进行自定义,再通过cloud-init来安装程序包和写入文件,或者配置用户和安全性。
除了在Linux安装证书初始启动期间要运行cloud-init外,无需在进行其他的步骤和代理。创建VM、安装程序包和启动应用需耗时几分钟。创建后测试一下Web应用是否安全,Linux的ssl证书安装如果使用的是自签名的安全证书,网页会有安全警告,提示用户存在不安全因素。
Linux的ssl证书安装相对于其他系统来讲,比较简单。不过需要注意的是,Linux安装证书对国内和国外的网络环境有一定的设置要求,如果没有及时更改,会造成SSL证书配置失败。