保定行业网站,维护网页,哈尔滨网站外包,南宁企业网站一、了解公钥加密#xff08;非对称加密#xff09; 非对称加密中#xff0c;用于加密数据的密钥与用于解密数据的密钥不同。私钥仅所有者知晓#xff0c;而公钥则可自由分发。发送方使用接收方的公钥对数据进行加密#xff0c;数据仅能使用相应的私钥进行解密。
你可以将…一、了解公钥加密非对称加密 非对称加密中用于加密数据的密钥与用于解密数据的密钥不同。私钥仅所有者知晓而公钥则可自由分发。发送方使用接收方的公钥对数据进行加密数据仅能使用相应的私钥进行解密。
你可以将公钥想象成一把可以扣上的开着的挂锁——发送方可以将信息放入一个盒子中并使用这把挂锁将其锁住。只有拥有这把挂锁钥匙的人才能再次取出信息并阅读。
二、数字签名 除了加密和解密数据外公钥和私钥还可以用于对数据进行数字签名。当对数据进行签名时会从数据中生成一个加密校验和。然后发送者使用自己的私钥对校验和进行签名加密。
接收者也使用与发送者相同的算法从接收到的消息中生成一个加密校验和。接着他使用发送者的公钥对随消息发送的加密校验和进行解密。如果他自己计算的校验和与解密后的校验和相匹配接收者就可以确定消息未被篡改并且是由拥有该私钥的人发送的。
三、角色CA 上面描述的加密过程效果很好但它存在一个弱点。你如何验证公钥的拥有者是谁呢换句话说你如何确保发送方真的是他们所声称的那个人
解决这个问题的常见方法是使用一个证书颁发机构CA作为受信任的第三方用其自己的私钥对公钥进行签名。由CA签名的公钥也被称为证书。你可以自己设立CA或者使用第三方的CA。知名的第三方CA包括VeriSign和VISA等组织。这些组织的公钥会自动安装到大多数流行的Web浏览器中。通过用CA的公钥验证签名浏览器可以验证来自Web服务器的公钥是有效的。
由证书颁发机构CA签名的公钥也被称为证书。在SSL/TLS加密中CA的使用方式如下 浏览器识别以https://开头的网络地址。网页浏览器向服务器请求由CA签名的服务器的公钥。网页服务器将公钥发送给网页浏览器。网页浏览器使用签发该公钥的CA的公钥来验证服务器的公钥。如果公钥有效网页浏览器和网页服务器将建立一个安全连接。 这样通过CA签名的公钥即证书浏览器能够验证服务器的身份并确保与服务器之间的通信是安全的。
四、对称加密 对称加密Symmetrical Encryption又称为单密钥加密或私钥加密是密码学中的一类加密算法。以下是关于对称加密的详细解释
定义与工作原理 定义采用单钥密码系统的加密方法即同一个密钥可以同时用作信息的加密和解密。工作原理在加密过程中将明文原始数据划分为固定长度的块然后通过密钥和加密算法将这些块转换成对应的密文块。在解密过程中通过相同的密钥和解密算法将密文块还原为明文块。 密钥管理 对称加密中使用的密钥只有一个因此发收信双方都使用这个密钥对数据进行加密和解密。 密钥的保密性至关重要因为一旦密钥被泄露加密的数据就可能被轻易解密。常见算法 常见的对称加密算法有AES、SM4、ChaCha20、3DES、Salsa20、DES、Blowfish、IDEA、RC5、RC6、Camellia等。 目前国际主流的对称加密算法是AES而国内主推的则是国标的SM4。应用场景 数据库加密用于数据库中敏感数据的加密如个人信息、银行账户信息等。文件加密用于对文档、图片、视频等文件进行加密保护。网络通信用于保护网络通信中的数据传输如HTTPS、SSL/TLS等协议。移动设备安全用于保护移动设备中存储的敏感数据如手机通讯录、短信、照片等。 特性与优势 加密解密速度快由于使用相同的密钥进行加密和解密对称加密通常比非对称加密更快。 资源消耗少在处理大量数据时对称加密的资源消耗相对较少。适用于大量数据加密由于速度快和资源消耗少的特点对称加密非常适合用于大量数据的加密场景。 然而对称加密在密钥管理方面存在一定的难题。由于双方都需要知道相同的密钥才能进行加密和解密因此如何安全地分发和存储密钥成为了一个重要的问题。此外如果密钥丢失或泄露加密的数据将不再安全。
综上所述对称加密是一种高效且广泛应用的加密算法在保护数据机密性方面发挥着重要作用。然而在使用对称加密时需要特别注意密钥的安全管理和分发问题。
五、ssl/tls握手 结合非对称加密、签名和对称加密等安全手段来看一下ssl/tls的握手过程中的应用。
六、openssl工具的使用
openssl工具介绍 名称 openssl - OpenSSL 命令行工具描述 OpenSSL 是一个加密工具包实现了安全套接层SSL v2/v3和传输层安全TLS v1网络协议以及这些协议所需的相关加密标准。 openssl 程序是一个命令行工具用于从 shell 中使用 OpenSSL 加密库的各种加密功能。它可以用于 创建和管理私钥、公钥及参数公钥加密操作创建 X.509 证书、证书签名请求CSR和证书吊销列表CRL计算消息摘要使用加密算法进行加密和解密SSL/TLS 客户端和服务器测试处理 S/MIME 签名或加密邮件时间戳请求、生成和验证 三种用法 openssl 命令 [命令选项] [命令参数] 这种用法是openssl工具的主要功能在描述部分阐述。openssl 程序提供了丰富的命令每个命令通常都有大量的选项和参数。 如下是openssl工具下所有的命令共三种标准命令摘要命令和加密命令。 可以通过以下方法查看所有的命令 关于选项拿ca命令来说如下图 如何查看命令的所有选项及选项说明 许多命令使用外部配置文件来指定其部分或全部参数并有一个 -config 选项来指定该文件。可以使用环境变量 OPENSSL_CONF 来指定文件的位置。如果未指定环境变量则在openssl配置文件/etc/ssl/openssl.cnf的默认的证书存储区域中来定义该区域的值取决于构建 OpenSSL 时指定的配置标志可修改为自定义的常用值。 openssl list [标准命令 | 摘要命令 | 加密命令 | 加密算法 | 摘要算法 | 公钥算法] 这种用法是用来查询各种命令的。 list 参数中的 standard-commands、digest-commands 和 cipher-commands 分别输出当前 openssl 工具中可用的所有标准命令、消息摘要命令或加密命令的名称列表每行一个条目。 用法如下 列出所有的标准命令 list 参数中的 cipher-algorithms 和 digest-algorithms 列出所有加密算法和消息摘要名称每行一个条目。别名以“from to”的形式列出。 list 参数中的 public-key-algorithms 列出所有支持的公钥算法。 openssl no-XXX [任意选项] 该用法用于测试命令。no-XXX 命令用于测试指定名称的命令是否可用。如果不存在名为 XXX 的命令则返回 0成功并打印 no-XXX否则返回 1 并打印 XXX。在这两种情况下输出都发送到标准输出并且不向标准错误打印任何内容。始终忽略附加的命令行参数。由于每种加密算法都有一个同名的命令这为 shell 脚本提供了一种简单的方法来测试 openssl 程序中加密算法的可用性。no-XXX 无法检测诸如 quit、list 或 no-XXX 本身之类的伪命令。例如 示例 所以看完以上介绍下面的命令如何理解
openssl req -new -x509 -keyout demoCA/private/cakey.pem -out demoCA/cacert.pem -days 3652 -newkey rsa:4096openssl使用openssl工具
req命令man req查询req 命令主要用于创建和处理 PKCS#10 格式的证书请求。此外它还可以创建自签名证书例如 用作根证书颁发机构 (CA)。
-new 命令的第一个参数man req查询此选项用于生成新的证书请求。它会提示用户输入相关字段的值。实际提示的字段及其最大和最小尺寸在配置文件中指定并且包括任何请求的扩展项。如果未使用 -key 选项它将使用配置文件中指定的信息生成新的 RSA 私钥。
-x509命令的第二个参数man req查询此选项输出自签名证书而不是证书请求。这通常用于生成测试证书或自签名根证书颁发机构 (CA)。添加到证书中的扩展项如果有的话在配置文件中指定。除非使用 set_serial 选项指定否则将使用一个大随机数作为序列号。如果通过 -in 选项指定了现有的请求那么该请求将被转换为自签名证书否则将创建新的请求。
-keyout命令的第三个参数man req查询此选项指定新创建的私钥要写入的文件名。如果未指定此选项则使用配置文件中存在的文件名。
-out命令的第四个参数man req查询这指定了要写入的输出文件的名称或者默认情况下写入标准输出。
-days命令的第五个参数man req查询当使用 -x509 选项时这指定了证书的认证天数。默认值为30天。
-newkey此选项用于创建新的证书请求和新的私钥。其参数可以采用多种形式 rsa:nbits其中nbits表示位数用于生成指定大小的RSA密钥。如果省略nbits即仅指定-newkey rsa则使用配置文件中指定的默认密钥大小。如本例 rsa:4096 对于所有其他算法支持-newkey alg:file形式其中file可以是算法参数文件由genpkey -genparam命令生成或具有相应算法的密钥的X.509证书。 param:file使用参数文件或证书文件生成密钥算法由参数确定。 algname:file使用算法algname和参数文件file两者必须匹配否则会出现错误。 algname仅使用算法algname如有必要应通过-pkeyopt参数指定参数。 dsa:filename使用文件filename中的参数生成DSA密钥。 ec:filename生成EC密钥可用于ECDSA或ECDH算法。 gost2001:filename生成GOST R 34.10-2001密钥需要在配置文件中配置ccgost引擎。如果仅指定gost2001则应通过-pkeyopt paramset:X指定参数集。
总结 这就是创建一个自定义的ca根证书使用这个命令前先查看或者配置好openssl.cnf文件中的下图配置或者按照配置文件中的要求在指定位置创建好目录。 说了这么多理解了就可以了。记住以上命令用的时候直接拷贝一份执行即可如有不同需求修改对应参数即可。
七、常用创建自签名证书过程
创建配置文件中指定的目录。例如
mkdir -p /root/demoCA/certs
cd /root/demoCA/
mkdir crl newcerts requests private
chmod 700 private
cd创建自定义CA根证书
openssl req -new -x509 -keyout demoCA/private/cakey.pem -out demoCA/cacert.pem -days 3652 -newkey rsa:4096创建服务器请求签名
openssl req -new -keyout demoCA/private/server_key.pem -out demoCA/requests/server_req.pem -newkey rsa:2048创建openssl所需的index.txt和序列文件以跟踪已签署的证书:
touch demoCA/index.txtecho 01 demoCA/serial创建服务器证书
openssl ca -policy policy_anything -days 365 -out demoCA/certs/server_crt.pem -infiles demoCA/requests/server_req.pem验证 创建vsftp服务并配置好证书和私钥的位置并打开ssl开关其他vsftp配置本处不记录示例如下 使用如下命令将服务器私钥转换成无密码保护的私钥。 openssl rsa -in /etc/vsftpd/certs/server_key.pem -out /etc/vsftpd/certs/server_key2.pem 重启vsftpd 结果