要做这件事情的起因在于,代码的升级包放在一个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. java基础学习总结——线程(二)

    一.线程的优先级别

  2. springboot通过http访问——修改访问的端口号

    文章转载来于:https://blog.csdn.net/zknxx/article/details/53433592 有时候我们可能需要启动不止一个SpringBoot,而SpringBoot默认的 ...

  3. Spring的Controller映射规则

    URL映射 1) 一般格式@RequestMapping(value=“/test”) 2) 可以使用模板模式映射,@RequestMapping(value=“/test/{userId}”) 3) ...

  4. OO学习总结与体会

    前言 经过了对于面向对象程序设计的一个月的学习,我初尝了JAVA以及面向对象程序的魅力.经历了三次难度逐渐加大的课后编程作业,我对于工程化面向对象编程以及调试有了深刻的认识与颇多感想.我写下本篇文章以 ...

  5. json反序列化对象

    这个是同事研究的wcf中中根据type类型反序列化json的示例 /// <summary> /// json转对象 /// </summary> /// <param ...

  6. 28_数据库_第28天(数据库、表及表数据、SQL语句)_讲义

    今日内容介绍 1.MySQL数据库 2.SQL语句 01数据库概念 A: 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来, 用户可以对数据库中的数据进行 ...

  7. 用node研究axios前后端交互状态码规则

    研究状态码规则围绕我的脑袋有些时间了. 加上最近比较不忙,开始了这方面的研究. 后端用的是直接跑过的node框架,express.可以直接参考express官方网站:http://www.expres ...

  8. IE实现userData 永久存储

      注意:只支持IE5,及其以上的浏览器 //需要使用 if 条件注释 <!DOCTYPE html> <html> <head> <meta charset ...

  9. Linux命令01

    Linux简介及Ubuntu安装 Linux,免费开源,多用户多任务系统.基于Linux有多个版本的衍生.RedHat.Ubuntu.Debian 安装VMware或VirtualBox虚拟机.具体安 ...

  10. jquery 半透明遮罩效果 小结

    最近偏离学术的道路越来越远了!! 今天要小结的是实现一个半透明遮罩效果.点击页面上的一个按钮,立即在屏幕的正中央显示某个部件,并且在这个部件之外的区域像是蒙上了一层半透明的遮罩.点击遮罩区域,该正中央 ...