SSL中,公钥,私钥,证书的后缀名都是些啥
Apache、Nginx环境下:
公钥:KEY
私钥:KEY
证书:CRT或者PEM(两者都可以)
概括:无论是根证书还是证书后缀都是CRT。
IIS环境:pfx
JKS环境:JKS
概括:IIS或者JKS安装证书有对应格式文件需要向Gworg机构索取:网页链接
在Apache的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为akey;
打开 apache 安装目录下 conf 目录中的 httpdconf 文件,找到以下内容并去掉“#”。
#LoadModule ssl_module modules/mod_sslso (如果找不到请确认是否编译过 openssl 插件)#Include conf/extra/httpd-sslconf(删除行首的配置语句注释符号“#”,保存后退出)
打开 apache 安装目录下 conf/extra/httpd-sslconf 文件 (也可能是confd/sslconf,与操作系统及安装方式有关), 在配置文件中查找以下配置语句:
# 添加 SSL 协议支持协议,去掉不安全的协议SSLProtocol all -SSLv2 -SSLv3# 修改加密套件如下SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUMSSLHonorCipherOrder on# 证书公钥配置SSLCertificateFile cert/a_publiccrt# 证书私钥配置SSLCertificateKeyFile cert/akey# 证书链配置,如果该属性开头有 '#'字符,请删除掉SSLCertificateChainFile cert/a_chaincrt
重启 Apache。
apachectl -k stop
apachectl -k start
加密方式一共分为两种 对称加密 和 非对称加密
加密和解密使用的是同一种密钥。
这类加密算法的优点是 计算量小,加密速度快,加密效率高
缺点也明显,在传输数据前,双方必须商定并且保存好密钥,任何一方泄露了密钥,加密信息就不再安全了。另外,每次使用对称加密算法时,都需要使用其他人不知道的唯一密钥,这样会使得双方会拥有大量的密钥,让管理密钥称为一种负担
非对称加密需要两个密钥来进行加密和解密,这两个密钥分别称为 公有密钥 和 私有密钥
这两份钥匙的使用是相互对应的。如果使用了公有密钥加密文件,那么解密就只能用对应的私密钥匙才能解密,同理,如果用私密钥匙加密了文件,那么解密也只能使用对应的公有。
这里有一个缺点:因为乙的公钥是公开的,所以有被人冒充甲方使用乙的公钥发送请求。
解决方案:首先甲用自己的私钥对消息进行加密,生成另一个密文,然后将密文发送给乙,乙收到消息之后,如果能用乙的公钥解密,就说明这个消息确实是甲方发送的。
虽然上面的方法解决了身份认证的问题,但是由于所有人都有甲的公钥,所以只要消息发送中途被截获就一定能被解密;而且对文件加密可能是个耗时的过程,比如文件足够大,那么用私钥加密整个文件以及拿到文件后解密的开销无疑是巨大的。为了解决这两个问题,于是有了数字签名。
数字签名的发送流程如下:
有了数字签名,我们就可以验证来源和消息的完整性。但是仍然还存在缺陷。假如存在第三人丙,偷偷在乙的电脑用自己的公钥替换了甲的公钥,然后用自己的私钥给乙发送信息,这时乙收到的消息会以为是甲发送的。
为了解决这个问题,于是有了 数字证书
数字证书,就是为了解决,无法区分电脑中的密钥归属的问题,其实就是给公钥做个身份证,以便让别人搞清楚公钥到底是谁的。
但仍然存在问题:假设有一万个人,他们每个人都有CA的证书,那么乙就要报关一万份不同的CA公钥来验证这些人的身份。这是不可能的。
所以就有了"根证书"。根证书里面存储着CA公钥来验证所有CA颁发的数字证书,乙只需要保管一份根证书就可以验证所有人的身份了。
以上
原文连接: https://blogcsdnnet/kswkly/article/details/83617944
0条评论