zoukankan      html  css  js  c++  java
  • linux下利用openssl来实现证书的颁发(详细步骤)--转载和修改

    原文地址:http://www.cnblogs.com/firtree/p/4028354.html

    linux下利用openssl来实现证书的颁发(详细步骤)

    1、首先需要安装openssl,一个开源的实现加解密和证书的专业系统。在centos下可以利用yum安装。

    2、openssl的配置文件是openssl.cnf,我们一般就是用默认配置就可以。如果证书有特殊要求的话,可以修改配置适应需求。这样必须把相关的文件放到配置文件指定的目录下面。

    3、首先需要利用openssl生成根证书,以后的服务器端证书或者客户端证书都用他来签发,可以建立多个根证书,就像对应不同的公司一样

       #生成根证书的私钥 

    openssl genrsa -out /home/lengshan/ca.key

    用openssl创建CA证书的RSA密钥(PEM格式):

    openssl genrsa -des3 -out ca.key 1024 

      #利用私钥生成一个根证书的申请,一般证书的申请格式都是csr。所以私钥和csr一般需要保存好

    openssl req -new -key /home/lengshan/ca.key -out /home/lengshan/ca.csr

      #自签名的方式签发我们之前的申请的证书,生成的证书为ca.crt

    openssl x509 -req -days 3650 -in /home/lengshan/ca.csr -signkey /home/lengshan/ca.key -out /home/lengshan/ca.crt

      #为我们的证书建立第一个序列号,一般都是用4个字符,这个不影响之后的证书颁发等操作

    echo FACE > /home/lengshan/serial

      #建立ca的证书库,不影响后面的操作,默认配置文件里也有存储的地方

    touch /home/lengshan/index.txt

      #建立证书回收列表保存失效的证书

    openssl ca -gencrl -out /home/lengshan/ca.crl -crldays 7

    已上就完成了根证书的相关操作,下一步可以颁发证书了。

    4、生成和签发服务器身份验证证书,注意证书是自签名的,浏览器会提示不受信任

      #建立服务器验证证书的私钥

    openssl genrsa -out /home/lengshan/server.key

      #生成证书申请文件

    openssl req -new -key /home/lengshan/server.key -out /home/lengshan/server.csr

      #利用根证书签发服务器身份验证证书

    openssl ca -in /home/lengshan/server.csr -cert /home/lengshan/ca.crt -keyfile /home/lengshan/ca.key -out /home/lengshan/server.crt

    至此,服务器端身份认证证书已经完成,可以利用证书和私钥生成pfx格式的证书给微软使用,命令如下:

    openssl pkcs12 -export -clcerts -in /home/lengshan/server.crt -inkey /home/lengshan/server.key -out /home/lengshan/server.p12

    5、签发客户端身份认证证书

      #生成私钥

    openssl genrsa -des3 -out /home/lengshan/users/1/1.key 1024

      #生成证书请求文件

    openssl req -new -key /home/lengshan/users/1/1.key -out /home/lengshan/users/1/1.csr

      #签发证书

    openssl ca -in /home/lengshan/users/1/1.csr -cert /home/lengshan/ca.crt -keyfile /home/lengshan/users/1/1.crt

      #生成pfx格式

    openssl pkcs12 -export -clcerts -in /home/lengshan/users/1/1.crt -inkey /home/lengshan/users/1/1.key -out /home/lengshan/users/1/1.p12

    客户端证书完成,注意如果在web服务器上使用客户端证书,需要在web服务器上使用根证书对客户端进行验证,切记!

    6、x509转换为pfx

    openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt     

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


    7、
    How to Convert PFX Certificate to PEM Format for SOAP
    
    
    $ openssl pkcs12 -in test.pfx -out client.pem  
    Enter Import Password:
    MAC verified OK
    Enter PEM pass phrase:
    Verifying - Enter PEM pass phrase:
     

    注释:1、证书的主题名称(Subject)在Internet中是唯一的。此字段必须是非空的,除非在扩展项中使用了其他的名字形式。

    p12格式的证书和pfx格式的证书是一样的。

    2、上述操作的过程中,根据错误提示创建相应的文件夹和文件,移动文件到指定的目录

    3、使用openssl进行证书格式转换

    数字证书资料cer和pfx的区别

    数字证书文件cer和pfx的区别

    作为文件形式存在的证书一般有这几种格式:

      1.带有私钥的证书

      由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。

      2.二进制编码的证书

      证书中没有私钥,DER 编码二进制格式的证书文件,以cer作为证书文件后缀名。

      3.Base64编码的证书

    证书中没有私钥,BASE64 编码格式的证书文件,也是以cer作为证书文件后缀名。

    由定义可以看出,只有pfx格式的数字证书是包含有私钥的,cer格式的数字证书里面只有公钥没有私钥。

     

      在pfx证书的导入过程中有一项是“标志此密钥是可导出的。这将您在稍候备份或传输密钥”。一般是不选中的,如果选中,别人就有机会备份你的密钥了。如果是不选中,其实密钥也导入了,只是不能再次被导出。这就保证了密钥的安全

      如果导入过程中没有选中这一项,做证书备份时“导出私钥”这一项是灰色的,不能选。只能导出cer格式的公钥。如果导入时选中该项,则在导出时“导出私钥”这一项就是可选的。

       如果要导出私钥(pfx),是需要输入密码的,这个密码就是对私钥再次加密,这样就保证了私钥的安全,别人即使拿到了你的证书备份(pfx),不知道加 密私钥的密码,也是无法导入证书的。相反,如果只是导入导出cer格式的证书,是不会提示你输入密码的。因为公钥一般来说是对外公开的,不用加密

  • 相关阅读:
    指针与数组的区别 —— 《C语言深度剖析》读书心得
    console ouput 与 重定向输出 效率对比
    First day in 阿里
    TestNG 使用入门教程
    Spring简单使用简介
    玩转Spring JUnit+mockito+powermock单元测试(使用详解)
    Spring Boot Junit 单元测试详解
    spring @Value注入map、List、Bean、static变量方式及详细使用
    单元测试Junit使用详解
    Mockito & PowerMock详解
  • 原文地址:https://www.cnblogs.com/shengulong/p/5935447.html
Copyright © 2011-2022 走看看