要做这件事情的起因在于,代码的升级包放在一个https的服务器上,我们的设备要实现升级,则是通过wget 获取https上的升级包,并且要实现验证证书的功能,这样可以防止设备被恶意篡改升级成其他文件包。

  起初,https的服务器都已经被搭建好了,可是验证证书的过程一直不顺利,现在把网络上自己试验成功方法总结如下,日后出现类似问题方便参考了。

  环境:https服务器,Ubuntu12.04+apache2+openssl

  首先,理解一下证书的类型。

  SSL证书包括:

  1,CA证书,也叫根证书或者中间级证书。如果是单向https认证的话,该证书是可选的。不安装CA证书的话,浏览器默认是不安全的。

  2,服务器证书,必选项。通过key,证书请求文件csr,再通过CA证书签名,生成服务器证书。

  3,客户端证书,可选项。若有客户端证书则是双向https验证。

  以上所有证书都可以自己生成。

  文件后缀

    linux系统是不以后缀名来判断文件类型的,但是为了我们能够更好地判断文件用途,所以添加各种后缀。以下是约定成俗的后缀。

    *.key:密钥文件,一般是SSL中的私钥;

    *.csr:证书请求文件,里面包含公钥和其他信息,通过签名后就可以生成证书;

    *.crt, *.cert:证书文件,包含公钥,签名和其他需要认证的信息,比如主机名称(IP)等。

    *.pem:里面一般包含私钥和证书的信息。

  服务器证书的生成

  a)  生成服务器私钥

    openssl genrsa -des3 -out server.key 1024

    输入加密密码,用 128 位 rsa 算法生成密钥,得到 server.key 文件。

  b)  生成服务器证书请求( CSR )

    openssl req -new -key server.key -out server.csr

    CSR( Certificate Signing Request)是一个证书签名请求,在申请证书之前,首先要在服务器上生成 CSR ,并将其提交给 CA 认证中心, CA 才能签发 SSL 服务器证书。也可以认为, CSR 就是一个在服务器上生成的证书。

    在生成这个文件的过程中,有一点需要特别注意,Common Name 填入主机名(或者服务器IP)。

  c)  自己生成服务器证书

    如果不使用 CA 证书签名的话,用如下方式生成:

    openssl req -x509 -days 1024 -key server.key -in server.csr > server.crt

    用服务器密钥和证书请求生成证书 server.crt , -days 参数指明证书有效期,单位为天。商业上来说,服务器证书是由通过第三方机构颁发的,该证书由第三方认证机构颁发的。    

    如果使用 CA 证书签名,用 openssl 提供的工具 CA.sh 生成服务器证书:

      mv server.csr newreq.pem

      ./CA.sh -sign

      mv newcert.pem server.crt

    签名证书后,可通过如下命令可查看服务器证书的内容:

      openssl x509 -noout -text -in server.crt

    可通过如下命令验证服务器证书:

      openssl verify -CAfile ca.crt server.crt

  

  客户证书的生成

  客户证书是可选的。如果有客户证书,就是双向认证 HTTPS ,否则就是单向认证 HTTPS 。

  a)  生成客户私钥

    openssl genrsa -des3 -out client.key 1024

  b)  生成客户证书签名请求

    openssl req -new -key client.key -out client.csr

  c)  生成客户证书(使用 CA 证书签名)

    openssl ca -in client.csr -out client.crt

  d)  证书转换成浏览器认识的格式

    openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx

  证书列表

  如果使用双向认证,就会有三个私钥和三个证书。分别是 ca.key, ca.crt, server.key, server.crt, client.key, client.crt ,以及给浏览器的 client.pfx 。

  如果使用有 CA 证书的单向认证,证书和私钥就是 ca.key, ca.crt, server.key, server.crt 。

  如果使用无 CA 证书的单向认证,证书和私钥就是 server.key, server.crt 。

最后在fedora作为客户端,wget 1.14通过命令

  wget --ca-certificate=server.crt https://+ip+file 成功获取文件,证书验证通过。

ssl证书生成与验证的更多相关文章

  1. Tomcat配置https之 JDK SSL证书生成与验证

    关于证书 SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL),安全协议是由Netscape Communication公司设计开发. ...

  2. SSL证书生成流程

    SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socketlayer(SSL),SSL安全协议主要用来提供对用户和服务器的认证:对传送的数据进行加密和隐藏:确保数 ...

  3. SSL证书生成方法【转】

    转自 SSL证书生成方法 - fyang的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/fyang2007/article/details/6180361 一般情况 ...

  4. 用nodejs快速实现websocket服务端(带SSL证书生成)

    有不少公司将nodejs的socket.io作为websocket的解决方案,很遗憾的是socket.io是对websocket的封装,并不支持html5原始的websocket协议,微信小程序使用的 ...

  5. 阿里云-免费SSL证书申请及验证步骤

    1.登录阿里云管理控制台,在搜索栏输入ssl,选择第一个SSL证书控制台回车即可 2.点击右上角的购买证书 3.选择购买最后一个品牌 4.选择增强型OV SSL 5.选中后会自动弹出免费型DV SSL ...

  6. TLS/HTTPS 证书生成与验证

    最近在研究基于ssl的传输加密,涉及到了key和证书相关的话题,走了不少弯路,现在总结一下做个备忘 科普:TLS.SSL.HTTPS以及证书 不少人可能听过其中的超过3个名词,但它们究竟有什么关联呢? ...

  7. tls/ssl证书生成和格式转换

    生成密钥:openssl genrsa -out my.key 2048 生成csr申请文件:openssl req -sha256 -new -key my.key -out my.csr 生成自签 ...

  8. ssl证书生成方法

    一般情况下,如果能找到可用的证书,就可以直接使用,只不过会因证书的某些信息不正确或与部署证书的主机不匹配而导致浏览器提示证书无效,但这并不影响使用. 需要手工生成证书的情况有: 找不到可用的证书 需要 ...

  9. ssl证书生成:cer&jks文件生成摘录

    一.生成.jks文件 1.keystore的生成: 分阶段生成:     keytool -genkey -alias yushan(别名) -keypass yushan(别名密码) -keyalg ...

随机推荐

  1. 2017年第八届蓝桥杯【C++省赛B组】

    1.标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有 ...

  2. sampleFactory(女娲造人)

    使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象. package c ...

  3. Failed to execute request because the App-Domain could not be created. Error: 0x8007000e 存储空间不足,无法完成此操作。

    今天业务发现,服务器上的网站无法访问了. 页面报错: Server Application UnavailableThe web application you are attempting to a ...

  4. jsp与Ajax技术

    Ajax 是Asynchronous Javascript and XML的缩写,异步的JavaScript和xml.Ajax是由JavaScript.XML.CSS.DOM等多种已有技术的结合,它可 ...

  5. 蜗牛慢慢爬 LeetCode 5.Longest Palindromic Substring [Difficulty: Medium]

    题目 Given a string s, find the longest palindromic substring in s. You may assume that the maximum le ...

  6. Linux_Apache 安装

    1.下载依赖扩展 apr.apr-util.pcre(正则依赖) https://apr.apache.org/download.cgi#aprutil1 apr:http://mirrors.shu ...

  7. Json的JsonValueProcessor方法

    将对象转换成字符串,是非常常用的功能,尤其在WEB应用中,使用 JSON lib 能够便捷地完成这项工作. JSON lib能够将Java对象转成json格式的字符串,也可以将Java对象转换成xml ...

  8. [知乎]SSD的延迟

    以及一些SSD的性能数据

  9. nowcoder 202H-卡牌游戏

    题目链接 题目描述 小贝喜欢玩卡牌游戏.某个游戏体系中共有N种卡牌,其中M种是稀有的.小贝每次和电脑对决获胜之后都会有一个抽卡机会,这时系统会随机从N种卡中选择一张给小贝.普通卡可能多次出现,而稀有卡 ...

  10. Yarn源码分析1(Hadoop2.7.2)

    在Hadoop中,调度框架YARN(Yet Another Resource Negotiater)是基于事件的,调度的是MapReduce的Application.Application有一系列的状 ...