发表日期:2017-06 文章编辑:小灯 浏览次数:3978
SSL的全称是Secure Sockets Layer,是网景公司创造的一种协议。它在TCP协议之上,应用层之下运作,是用来传输敏感信息的,比如在网上传输信用卡的一些细节。SSL通过使用一个私钥来加密信息,加密后的信息会在一个激活了SSL功能的连接中进行传输,从而阻止了对信息的窃取。
最流行的SSL的使用方法是,与浏览器结合(使用HTTP协议),但事实上很多网络的应用都可以从使用SSL中受益。按照约定,使用SSL连接的URL地址以https开头,而不是http。
1. 可以让服务器证明自己的身份
2. 可以让用户证明自己的身份(可选择的)
3.可以建立加密的连接
为两个交互的应用提供可靠性和私密性
SSL协议由两层组成,分别是SSL记录层和SSL握手层。记录层用来传输大量数据,而握手层是为数据传输建立安全的连接。
1. 对“ciper suite”进行协商
2.验证服务器
3.验证客户端(可选择)
4.生成 session keys
5.建立一个安全连接
包含的内容:证书发布者的名称,证书发布的对象,公钥,时间戳
是从上一个消息中制造出的一种消息产物,消息产物有以下重要的特性:1. 这种制造是很难被反向恢复的 2. 很难用一条不同的消息,却计算出具有相同的值的消息产物
只要你已经正确地生成一个满足X.509的SSL证书,你可以通过生成一个CA(证书机构),从而自签名,也可以让一个具有全球认可度的证书机构来对此证书进行签名。
在这个证书签名的过程中,它就已经使用了OpenSSL的工具集,或是用来触发LDAP或是HTTP协议的服务器SSL连接的库。
自签名的证书有一个最大的优势,那就是它完全是免费的,并且它可能完全符合需要。自签名的证书在封闭的实验室环境中,或是用作测试需要是极好的。
自签名证书的一个缺点是,当访问一个使用自签名证书的服务器时,用户的浏览器或是其他应用程序会有警告产生。通过将服务器端的证书移植到客户端应用中,警告可能可以被消除。在一个面向公众和生产额环境中,不建议使用自签名证书,因为由于这些警告带来的不信任问题和对用户造成的可能的困惑情绪。
注意:如果你想要成立一个商业网站,那么你必须要获得一个被认可的CA签名的证书。
进行验证:这个网站必须有一个证书,服务器必须要向CA提交证书申请。
进行加密:必须分享keys
X.509是ITU-T(国际电信委员会)发布的电子证书的一个具体化。它将验证用户或电脑系统所需要的信息和属性具体化,从而被广泛地用于安全控制和在网上进行电子签名证书的分发。OpenSSL经常使用X.509证书
OpenSSL课题致力于开发一个强健的、商业档次、功能健全的开源工具集,实现的是第二版和第三版SSL协议规范,和第一版的TLS协议规范,并且也是一个功能全大的通用密码库。
OpenSSL课题由一个全球性的公益组织管理,利用网络来交流、计划和开发这个工具及其文档。OpenSSL基于一个由 Eric A. Young和Tim J.Hudon开发的SSLeay库。
1. 开源
2. 全功能的实现
3. 跨平台(Windows和Unix)
4. 命令行界面
5. 应用编程界面(针对C/C++, Perl, PHP, Python)
1. 创造出RSA, DSA和DH的秘钥对
2. 创造出X509的证书,CSRs和CRLs
3. 计算出消息产物
4. 利用密码进行编码和解码工作
5. 对 SSL/TLS客户端和服务器进行测试
6. 处理S/MIME签名和加密过的邮件
为了实现自签名的证书,你必须首先建立一个CA,步骤如下:
比如在你的主目录下,在命令行中敲以下的代码:
cd && mkdir -p myCA/signedcerts && mkdir myCA/private && cd myCA
这行代码会在你的主目录下建立一个名叫myCA的新的子目录,并且在myCA的文件夹中有两个叫做“signedcerts”和“private”的子目录。
myCA中包含CA证书,证书数据库,生成的证书,钥匙和请求。
myCA/signedcerts中包含被签名的证书的拷贝。
myCA/private中包含私钥。
在myCA的子目录下建立初始证书数据库。在命令行中敲下如下命令:
echo '01' > serial && touch index.txt
为创建CA证书而创建一个初始的caconfig.cnf文件。使用你所喜爱的文本编辑器,编辑caconfig.cnf文件,将以下的内容插入文件:
注意:确保把此文件中特定的信息进行了修改,比如在[ local_ca ]和[ req ]里的/home/<username>,同时在[root_ca_distinguished_name]中的commonName, stateOrProvinceName, countryName也需要改动。
当此文件编辑完毕后,将其保存为caconfig.cnf
通过以下的命令生成CA根证书和秘钥。
1. export OPENSSL_CONF=~/myCA/caconfig.cnf
这条命令设置了一个环境变量,OPENSSL_CONF,这个变量会强制openssl工具去你指定的目录中寻找配置文件。
2. openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -days 1825
通过这条命令来CA证书和秘钥。输入以上命令后,得到的结果如下:
你会被强制要求输入一个密码。请记住这个密码,因为以后每一次你想要用这个CA为新的服务器或者客户端证书签名时都需要用到。
以上的命令会生成一个使用PEM格式和RSA公/私钥密码自签名的证书。这个证书的有效期为1825天。
生成的文件存放的位置,以及内容如下:
~/myCA/cacert.pem: CA的公证书
~/myCA/private/cakey.pem: CA的私钥
我们现在已经配置好CA的证书,我们可以用它来为自签名的证书签名。在开始下面的步骤之前,你可能希望能为证书的私钥加密。为私钥加密的好处是,可以防止它被窃取。
这个开启SSL功能的应用每一次启动,都需要输入密码,否则这个证书就没有办法被使用。在这样的情况下,虽然非常安全,但也可能带来一些问题,比如如果电脑重启,服务必须开启但是知道密码的人又不在场。
一种解决这个问题的办法是需要用一些安全的代价来交换。密码可以被解析,这样启用了SSL的应用就可以自动启动,而不用必须输入密码。
想要生成一个启用SSL服务的自签名证书,遵循如下几步:
使用你喜爱的编辑器,在myCA文件下新建一个exampleserver.cnf文件,内容如下:
注意:
1. 确保要将server_distinguished_name中的commonName的值改为与CA配置文件中的值相一致,否则会出现不匹配的错误。
2. 将[ server_distinguished_name]下的commonName改为localhost,同时将[ alt_name ]下的DNS.0和DNS.1都改成localhost。
编辑完毕之后,将文件保存。
首先输入以下命令:
export OPENSSL_CONF=~/myCA/exampleserver.cnf
与之前生成CA中的一样,这行命令也是通过设置环境变量OPENSSL_CONF的值,强制openssl到我们指定的地方寻找配置文件。
接着通过下面的代码生成服务器证书和秘钥:
openssl req -newkey rsa:1024 -keyout tempkey.pem -keyform PEM -out tempreq.pem -outform PEM
我们会看到反馈结果如下:
我们也会被要求输入密码。请记住这个密码。
使用如下的命令将私钥转换成不加密的形式:
openssl rsa < tempkey.pem > server_key.pem
我们会被要求输入密码,反馈结果如下:
如果你希望保持秘钥为加密状态的话,输入以下的命令,而不要进行上面的步骤:
mv tempkey.pem server_key.pem
使用如下的命令:
export OPENSSL_CONF=~/myCA/caconfig.cnf
这条命令将OpenSSL的配置文件位置又重新变回CA的配置文件位置。
使用如下命令对证书进行签名:
openssl ca -in tempreq.pem -out server_crt.pem
你会被要求输入我们在创立CA时设置的密码。在命令行中输入密码,你会被要求确认服务器证书的信息,最后确认是否对该证书进行签名。命令行的反馈结果如下:
使用以下的命令行移除这个暂时的证书,以及秘钥文件:
rm -f tempkey.pem && rm -f tempreq.pem
恭喜你!到目前为止,你已经拥有了一个自签名的服务器证书和秘钥对:
server_crt.pem:服务器应用证书文件
server_key.pem:服务器应用秘钥文件
你可以在你需要的服务器应用软件上使用这个证书和秘钥。
使用PEM证书进行SSL连接,需要将CA证书引入到火狐web浏览器中。
将该服务器的根证书引入到浏览器中可以保证客户端可以与该服务器端建立一个安全的SSL连接,而不会被警告自签名的问题。
在火狐浏览器中选择首选项
在左侧栏目中选择高级 - > 证书 - > 查看证书
选择证书机构 - > 导入
选择之前生成的cacert.pem文件导入
修改/etc/apache2/sites-available中default-ssl文件的SSLCertificateFile以及
SSLCertificateKeyFile,前者改为给服务器颁发的证书文件,server_crt.pem或
01.pem都可,后者是服务器私钥server_key.pem,不是CA的私钥cacert.pem。
执行a2enmod ssl和a2ensite default-ssl启动SSL模块,
执行service apache2 restart重启服务器
我们在URL栏目中输入http://localhost,显示出如下页面,并且地址栏前面出现一锁的形状,将鼠标浮在锁上可以看到我们之前编辑CA配置文件中指定的机构名称。
日期:2018-04 浏览次数:6758
日期:2017-02 浏览次数:3433
日期:2017-09 浏览次数:3652
日期:2017-12 浏览次数:3523
日期:2018-12 浏览次数:4813
日期:2016-12 浏览次数:4579
日期:2017-07 浏览次数:13640
日期:2017-12 浏览次数:3502
日期:2018-06 浏览次数:4262
日期:2018-05 浏览次数:4441
日期:2017-12 浏览次数:3553
日期:2017-06 浏览次数:3977
日期:2018-01 浏览次数:3937
日期:2016-12 浏览次数:3904
日期:2018-08 浏览次数:4420
日期:2017-12 浏览次数:3702
日期:2016-09 浏览次数:6400
日期:2018-07 浏览次数:3203
日期:2016-12 浏览次数:3225
日期:2018-10 浏览次数:3375
日期:2018-10 浏览次数:3475
日期:2018-09 浏览次数:3574
日期:2018-02 浏览次数:3592
日期:2015-05 浏览次数:3516
日期:2018-09 浏览次数:3301
日期:2018-06 浏览次数:3431
日期:2017-02 浏览次数:3867
日期:2018-02 浏览次数:4332
日期:2018-02 浏览次数:4169
日期:2016-12 浏览次数:3570
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.