技术支持中心>证书安装>创建ssl证书,ssl证书生成与验证

  • 创建ssl证书,ssl证书生成与验证

             ssl证书生成与验证,要做这件事情的起因在于,代码的升级包放在一个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:里面一般包含私钥和证书的信息。

        自己生成服务器证书 

        如果不使用 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 成功获取文件,证书验证通过。

  • 在线咨询