开发者社区> 余二五> 正文

SSL证书相关技巧 -- 玩转自签名证书

简介:
+关注继续查看

引入:

如果自己搭建局域网的应用的话,我们是没必要向证书颁发机构购买证书的。因为如果什么证书都能颁发证书的机构买的话,一来价格不菲,二来,在小型局域网应用中,因为使用者群体都是指定的人,所以不存在问题,所以我们完全可以自己签发一个安全证书。这种情况下,对于证书的信任就不是靠CA去认可了,而完全取决于局域网内部彼此的信任,比如我自己签发了一个证书,如果大家信任我,那么他们当然就会把私密数据通过SSL通道发送到我架设的服务器上,如果大家不信任我,那么他们就不会把私密数据通过SSL通道发送到我架设的服务器上。


分析:

从上述的简单说明中可以看出,如果是自签名的证书的话,证书安全性的校验不由权威机构负责,而是我们自己来负责。我这里来实践下。


首先,我们建立自签名的证书(这里尤其要注意的是,CN必须和服务器所在的计算机名一样):

比如,我的机器的计算机名是Charles:

wKiom1LviXDzfbA9AACR5M030Hg506.jpg


那么我们证书的CN也必须为Charles:


wKioL1LviZLBmVK4AAGZmFGGJp4732.jpg


我们查看证书确保和我们设想一致:

wKiom1LvifDSvM8yAAHeMhxR5kA346.jpg

因为我们的服务器使用tomcat(假定),所以我们需要在HTTPS的连接器(Connector)上来启用这个证书,为了简单起见,我们把clientAuth仍然保留默认值"false",来表明我们用的是最简单的是单向认证。

wKioL1LvikDDnCpQAAIAHFckuy4528.jpg


这时候,我们启动tomcat,利用https访问首页,因为我们启用了https,并且用了自己签名的证书,所以第一次访问肯定受到浏览器的保护:

wKiom1Lviqrxq5kFAAG73LXRT5s172.jpg



这个合情合理,因为就算在局域网中,也不是所有人都认识我Charles的,他们凭什么要把敏感数据发送到我架设的服务器处理呢?


现在假定局域网中要访问我的网站的用户都认识我了,也知道我是个好人,我的网站是正当网站,那么他们如何让他们自己的浏览器解除对于我架设的网站的HTTPS访问限制呢?


显然就用老办法,只要我把我的证书分享给局域网中每一个信任我的用户,然后让他们自己把我的证书文件导入到他们操作系统的证书管理器的“受信任的根证书颁发机构”就可以了,这样他们就知道,我颁发的证书对于他们来说是信任的。


为此,我需要先导出证书,因为我这里证书用的扩展名是.keystore,我必须导出为X.509证书的形式(扩展名为cer或者crt),我的用户才可以导入这个证书到他们证书管理器。


于是我导出证书为X.509证书:

wKioL1Lvi-XCMcR1AADo1ezIwbE716.jpg


然后通过某种方式(要么共享文件,要么邮件或者samba服务器等), 把我的证书分享给大家。


这时候,局域网内名叫“张三”的用户只要打开他操作系统的证书管理器,添加我提供的证书文件(crt或者cer文件)就可以了,方法是:右击“受信任的根证书颁发机构”->证书-> 所有任务->导入 :

wKiom1LvjKHwU9CGAAcLVtU_GFg543.jpg


然后选择我提供给张三的证书文件(cer或者crt文件):

wKioL1LvjNKy4Uh8AAIyDv09CvI882.jpg


这时候,张三再访问我架设的服务器 (https://charles:8443/),就会发现地址栏上的锁是绿色的了:

wKiom1LvjUWAp9VwAAFCUz3FCAI605.jpg



总结:


1.面向局域网的应用无需向证书颁发机构购买证书,使用自签名的证书就可以了。

2.在局域网内部利用HTTPS访问自签名的证书的网站,其网站的合法性不由权威的CA认证,而是由彼此的信任来保证。

3.为了让服务器开启https,必须在对应的连接器上配置证书文件和密码,并且可以启用单向加密或者双向加密。

4.当建立信任后,如果希望局域网内部的其他用户访问此站点不受到操作系统的限制,需要让用户依次导入对应证书并且将其设为“受信任的根证书颁发机构”。

5.因为自己签名的证书格式不能被直接导入,所以它必须先导出为X.509证书规定的格式,然后才可以被目标用户系统的证书管理器正确导入。






本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1355870,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
此证书的签发者无效
<p style="color:rgb(51,51,51); font-family:Arial; font-size:14px; line-height:26px"> 1,按照你那个链接下载,<a target="_blank" href="https://developer.apple.com/certificationauthority/AppleWWDRCA.cer" id="u
1277 0
HTTPS 免费证书,免费 ssl 证书,申请多种免费证书
推荐一个免费的阿里云产品:云盾证书(https证书) 为了能让非专业人士看懂,同样尽量用直白的话,一般来说:当你个人需要建立网站,或者公司要建立官网、商城,通常需要先购买服务器或云主机,虚拟空间,然后将网页和程序、数据库部署上去,用户就可以用浏览器访问了,比如说浏览页面的内容、登录、发表评论、购物等。
19052 0
关于 SSL 证书
在 HTTPS 协议大行其道的今天,其通信所需要的 SSL 证书也是不可或缺的一环,如果访问没有 SSL 证书的网站,就是下面这样的
115 0
安装ssl证书有什么用?
为什么网站要安装ssl证书?现如今的网络环境越来越不安全,各种私人信息被泄露,网站数据遭劫持,因此对网站安装ssl证书是非常重要的。而且这也是今后的趋势,百度也出了公告说,会优先对已经安装ssl证书的网站进行抓取。
1226 0
HTTPS 免费证书,免费 ssl 证书,FreeSSL.org 申请多种免费证书
随着互联网的日益发展,它已经深入的人们生活的方方面面,可以说我们已经离不开互联网了。面对人类如此的依赖,互联网安全愈发的重要,个人隐私也愈发的需要保护起来。如何才能提高我们上网的安全呢?如何保护我们上网的隐私?如何防止被黑客劫持?等等,许多安全因素需要考虑到。
50034 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载