欢迎您光临深圳塔灯网络科技有限公司!
电话图标 余先生:13699882642

网站百科

为您解码网站建设的点点滴滴

SSL和 HTTPS

发表日期:2017-06 文章编辑:小灯 浏览次数:3889

SSL是什么?

SSL的全称是Secure Sockets Layer,是网景公司创造的一种协议。它在TCP协议之上,应用层之下运作,是用来传输敏感信息的,比如在网上传输信用卡的一些细节。SSL通过使用一个私钥来加密信息,加密后的信息会在一个激活了SSL功能的连接中进行传输,从而阻止了对信息的窃取。

最流行的SSL的使用方法是,与浏览器结合(使用HTTP协议),但事实上很多网络的应用都可以从使用SSL中受益。按照约定,使用SSL连接的URL地址以https开头,而不是http。

SSL可以做什么?

1. 可以让服务器证明自己的身份

2. 可以让用户证明自己的身份(可选择的)

3.可以建立加密的连接

SSL协议

目的:

为两个交互的应用提供可靠性和私密性

组成:

SSL协议由两层组成,分别是SSL记录层和SSL握手层。记录层用来传输大量数据,而握手层是为数据传输建立安全的连接。

握手的流程:

1. 对“ciper suite”进行协商

2.验证服务器

3.验证客户端(可选择)

4.生成 session keys

5.建立一个安全连接

两个有用的术语

1. 证书

包含的内容:证书发布者的名称,证书发布的对象,公钥,时间戳

2.电子签名

是从上一个消息中制造出的一种消息产物,消息产物有以下重要的特性:1. 这种制造是很难被反向恢复的 2. 很难用一条不同的消息,却计算出具有相同的值的消息产物

SSL证书

在服务器端使用的SSL证书

只要你已经正确地生成一个满足X.509的SSL证书,你可以通过生成一个CA(证书机构),从而自签名,也可以让一个具有全球认可度的证书机构来对此证书进行签名。

在这个证书签名的过程中,它就已经使用了OpenSSL的工具集,或是用来触发LDAP或是HTTP协议的服务器SSL连接的库。

生成和对自签名的证书进行签名

自签名的证书有一个最大的优势,那就是它完全是免费的,并且它可能完全符合需要。自签名的证书在封闭的实验室环境中,或是用作测试需要是极好的。

自签名证书的一个缺点是,当访问一个使用自签名证书的服务器时,用户的浏览器或是其他应用程序会有警告产生。通过将服务器端的证书移植到客户端应用中,警告可能可以被消除。在一个面向公众和生产额环境中,不建议使用自签名证书,因为由于这些警告带来的不信任问题和对用户造成的可能的困惑情绪。

注意:如果你想要成立一个商业网站,那么你必须要获得一个被认可的CA签名的证书。


SSL是如何工作的?

进行验证:这个网站必须有一个证书,服务器必须要向CA提交证书申请。

连接建立过程

进行加密:必须分享keys

证书获取流程

X.509是什么?

X.509是ITU-T(国际电信委员会)发布的电子证书的一个具体化。它将验证用户或电脑系统所需要的信息和属性具体化,从而被广泛地用于安全控制和在网上进行电子签名证书的分发。OpenSSL经常使用X.509证书

OpenSSL

什么是OpenSSL?

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签名和加密过的邮件

利用OpenSSL进行实验

建立CA

为了实现自签名的证书,你必须首先建立一个CA,步骤如下:

1. 建立一个初始的工作环境

比如在你的主目录下,在命令行中敲以下的代码:

cd && mkdir -p myCA/signedcerts && mkdir myCA/private && cd myCA

这行代码会在你的主目录下建立一个名叫myCA的新的子目录,并且在myCA的文件夹中有两个叫做“signedcerts”和“private”的子目录。

myCA中包含CA证书,证书数据库,生成的证书,钥匙和请求。

myCA/signedcerts中包含被签名的证书的拷贝。

myCA/private中包含私钥。

2. 建立初始证书数据库

在myCA的子目录下建立初始证书数据库。在命令行中敲下如下命令:

echo '01' > serial  && touch index.txt

3. 建立初始caconfig.cnf文件

为创建CA证书而创建一个初始的caconfig.cnf文件。使用你所喜爱的文本编辑器,编辑caconfig.cnf文件,将以下的内容插入文件:

caconfig.cnf内容

注意:确保把此文件中特定的信息进行了修改,比如在[ local_ca ]和[ req ]里的/home/<username>,同时在[root_ca_distinguished_name]中的commonName, stateOrProvinceName, countryName也需要改动。

当此文件编辑完毕后,将其保存为caconfig.cnf

4. 生成CA根证书和秘钥

通过以下的命令生成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后的反馈

你会被强制要求输入一个密码。请记住这个密码,因为以后每一次你想要用这个CA为新的服务器或者客户端证书签名时都需要用到。

以上的命令会生成一个使用PEM格式和RSA公/私钥密码自签名的证书。这个证书的有效期为1825天。

生成的文件存放的位置,以及内容如下:

~/myCA/cacert.pem: CA的公证书

~/myCA/private/cakey.pem: CA的私钥

创建一个自签名的服务器证书

我们现在已经配置好CA的证书,我们可以用它来为自签名的证书签名。在开始下面的步骤之前,你可能希望能为证书的私钥加密。为私钥加密的好处是,可以防止它被窃取。

这个开启SSL功能的应用每一次启动,都需要输入密码,否则这个证书就没有办法被使用。在这样的情况下,虽然非常安全,但也可能带来一些问题,比如如果电脑重启,服务必须开启但是知道密码的人又不在场。

一种解决这个问题的办法是需要用一些安全的代价来交换。密码可以被解析,这样启用了SSL的应用就可以自动启动,而不用必须输入密码。

想要生成一个启用SSL服务的自签名证书,遵循如下几步:

1. 创建一个服务器配置文件

使用你喜爱的编辑器,在myCA文件下新建一个exampleserver.cnf文件,内容如下:

注意:

1. 确保要将server_distinguished_name中的commonName的值改为与CA配置文件中的值相一致,否则会出现不匹配的错误。

2. 将[ server_distinguished_name]下的commonName改为localhost,同时将[ alt_name ]下的DNS.0和DNS.1都改成localhost。

编辑完毕之后,将文件保存。

2. 生成服务器证书和秘钥

首先输入以下命令:

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

使用CA的秘钥对服务器证书进行签名

使用如下的命令:

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文件导入

修改Apache文件里的内容

修改/etc/apache2/sites-available中default-ssl文件的SSLCertificateFile以及

SSLCertificateKeyFile,前者改为给服务器颁发的证书文件,server_crt.pem或

01.pem都可,后者是服务器私钥server_key.pem,不是CA的私钥cacert.pem。

修改Apache的配置文件

开启SSL服务

执行a2enmod ssl和a2ensite default-ssl启动SSL模块,

执行service apache2 restart重启服务器

启动SSL模块

最终的结果

我们在URL栏目中输入http://localhost,显示出如下页面,并且地址栏前面出现一锁的形状,将鼠标浮在锁上可以看到我们之前编辑CA配置文件中指定的机构名称。

https实验结果截图
本页内容由塔灯网络科技有限公司通过网络收集编辑所得,所有资料仅供用户学习参考,本站不拥有所有权,如您认为本网页中由涉嫌抄袭的内容,请及时与我们联系,并提供相关证据,工作人员会在5工作日内联系您,一经查实,本站立刻删除侵权内容。本文链接:https://dengtar.com/20532.html
相关开发语言
 八年  行业经验

多一份参考,总有益处

联系深圳网站公司塔灯网络,免费获得网站建设方案及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:余经理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

  • QQ咨询
  • 在线咨询
  • 官方微信
  • 联系电话
    座机0755-29185426
    手机13699882642
  • 预约上门
  • 返回顶部