ssl证书生成与验证

摘要:
使用密钥、证书请求文件csr,然后使用CA证书签名生成服务器证书。如果有客户端证书,则为双向https身份验证。b) 生成服务器证书请求opensslreq新密钥服务器。密钥输出服务器Csr Csr是一个证书签名请求。在申请证书之前,必须首先在服务器上生成CSR并将其提交给CA认证中心,然后CA才能颁发SSL服务器证书。最后,作为fedora中的客户机,wget1.14通过命令wget--ca certificate=server成功获取了文件。crttps://+ip+文件,并验证证书是否成功。

  要做这件事情的起因在于,代码的升级包放在一个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证书生成与验证》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Xcode开发 字符串用法动态按照属性排序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Red Team内网穿透技术开源工具

文章 https://artkond.com/2017/03/23/pivoting-guide/ https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology and Resources/Network Pivoting Techniques.md#sshuttl...

Let's Encrypt的HTTPS证书在阿里云OSS内部署

最重要的就是找到pem格式的公钥和私钥文件。 Let's Encrypt的HTTPS证书中包含的公钥文件在certificate.crt内,全部复制即可。 Let's Encrypt的HTTPS证书中未提供RSA私钥格式,需要自己手动转换。 转换过程如下 openssl rsa -in private.pem -out new_server_key.pem...

ros-tf、四元数、欧拉角及Eigen等基本知识普及

ROS中的坐标系和欧拉角 https://www.dazhuanlan.com/2019/12/05/5de8a2429ca9e/ tf 转载自:   http://www.chenjianqu.com/show-107.html https://chenjianqu.blog.csdn.net/article/details/105494587 四元数:...

Windows 下apache https配置(phpstudy)

1.首先获取证书,https://www.pianyissl.com/ 免费三个月的 或者 自己生成私钥、证书,然后应用到apache中。 http://blog.sina.com.cn/s/blog_58f71ef00102wvlx.html 讲解了如何在windows PHPStudy Apache 配置支持HTTPS http://www.cnbl...

GJK碰撞检测算法

https://blog.lufei.so/#/collisionDetection/GJK/1 https://blog.lufei.so/#/collisionDetection/GJK/2 现实世界里我们对于是否碰撞的判断可以说极其容易而且准确,比如下图。在二进制的世界里,一切就没这么直观了。 GJK(Gilbert-Johnson-Keerthi...

spring cloud各个微服务之间如何相互调用(Feign、Feign带token访问服务接口)

1、首先先看什么是Feign。 这里引用“大漠知秋”的博文https://blog.csdn.net/wo18237095579/article/details/83343915 2、若其他服务的接口未做权限处理,参照上文第1点的博文即可。 3、若其他服务的接口做了权限的处理(例如OAuth 2)时该如何访问? a、有做权限处理的服务接口直接调用会造成调用...