商会资讯

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博连接

一步搞定

搜索
热搜: 活动 交友 discuz
查看: 6400|回复: 0
打印 上一主题 下一主题

openssl生成服务器客户端秘钥已经颁发证书等配置命令

[复制链接]

109

主题

1

好友

3774

积分

管理员

Rank: 9Rank: 9Rank: 9

  • ta_mind
    mb_qb7
    2013-3-19 01:56
  • classn_01: 366 classn_02

    [LV.9]以坛为家II

    跳转到指定楼层
    楼主
    发表于 2017-8-1 15:41:57 |只看该作者 |倒序浏览
    1.首先要生成服务器的私钥:
    openssl genrsa -des3 -out server.key 2048

    {注:openssl rsa -in server.key -out server.key
    执行这个命令之后,再启动nginx时,就无需输入密码}


    2. 用server.key生成一个证书
    openssl req -new -key server.key -out server.csr
    生成的csr 文件交给CA机构签名后,形成服务器自己的证书。按照提示,提供服务器证书的相关信息。


    3. 对客户端也做同样的命令生成key及csr文件
    openssl genrsa -des3 -out client.key 2048


    4. 用client.key 生成一个证书
    openssl req -new -key client.key -out client.csr


    5. 生成CSR证书文件必须有CA机构的签名才可以形成证书。这里制作自己的CA生成一个key文件CA.key和一个根证书ca.crt
    openssl req -new -x509 -keyout ca.key -out ca.crt

    7. 创建openssl.conf 生成的配置文件,输入一下命令

    #根据openssl.cnf生成配置文件
    touch /etc/pki/CA/{index.txt,serial}

    #设置副本名称开始内容
    echo 01 > /etc/pki/CA/serial

    #设置副本证书存放目录
    mkdir /etc/pki/CA/newcerts


    8. 用CA的证书为刚才生成的server.csr 和 client.csr进行文件签名

    a:为服务器颁发证书
    openssl ca -in server.csr -out server.crt -cert ca.crt-keyfile ca.key

    注:该命令执行后需要选择两次[y/n],我们输入y,即可。


    b: 为客户端颁发证书
    openssl ca -in client.csr -out client.crt -cert ca.crt-keyfile ca.key


    9:证书格式转换

    #IE浏览器需要p12证书,所以需要签发p12证书,用于IE签发:
    openssl pkcs12 -export -clcerts -in client.crt -inkeyclient.key -out client.p12

    #IOS 证书签发格式
    openssl x509 -in client.crt -out client.cer

    #Android 证书签发格式
    openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx

    #pem格式证书
    openssl pkcs12 -export -in ddmdd_a.pfx -out client.pem




    10 其他:
    a. 删除私钥密码:
    #删除私钥密码
    openssl rsa -in client.key -out client_open.key

    b. 证书撤销
    echo 01 >  crlnumber
    openssl ca -keyfile ca.key -cert ca.crt -revoke client.crt #从CA中撤销证书client.crt
    openssl ca -gencrl -keyfile ca.key -cert ca.crt -outclient.crl  #生成或更新撤销列表


    c. 查看证书信息
    openssl x509 -in client.pem -noout -text

    d.
    client 浏览器需要使用的文件:ca.crt,client.crt,client.key,client.pfx
    server 端使用的文件有:     ca.crt,server.crt,server.key


    11. 配置Nginx SSL

    server {
           listen         443ssl;
           server_name    smsapi.chunbo.com;
           root          /var/www/smsapi.david.com;

           ssl on;
           ssl_certificate       /etc/nginx/conf.d/server.crt;
           ssl_certificate_key    /etc/nginx/conf.d/server.key;
           ssl_client_certificate /etc/nginx/conf.d/ca.crt;

           ssl_verify_client      off;
           ssl_session_timeout    5m;
           ssl_protocols   SSLv2 SSLv3TLSv1;
           ssl_ciphers    HIGH:!aNULL:!MD5;
           ssl_prefer_server_ciphers  on;

           location / {
               indexindex.php index.html;
           }

           location ~ \.php$ {
               include       /etc/nginx/fastcgi_params;
               if (-f$request_filename) {
                  fastcgi_pass  127.0.0.1:9000;
               }
              fastcgi_index  index.php;
              fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
           }
    }


    #nginx 配置完成,reloadNginx服务

    12. 客户端导入证书
    证书安装及使用把刚才生成的证书:根证书ca.crt和客户端client.crt(client.pfx)安装到客户端,ca.crt安装到信任的机构,client.crt直接在windows安装或安装到个人证书位置。(如果是IE浏览器,需要安装client.pfx证书,在导入的时候需要输入证书签发的密码)


    13. 测试

    接下来就可以通过浏览器进行测试。有的时候可能会作为一个API接口提供其它程序进行调用,比如我使用pythonrequests进行调用
    import requests

    responseObj = requests.get(' cert=('/path/client.crt','/path/client.key' ) )

    data = responseObj.text

    或:

    responseObj = requests.get(' verify='/path/client.pem')
    data = responseObj.text

    如果是JAVA程序,需要P12格式证书。根据自己的需求进行选择。
      给予Nginx+openssl 部署已经完成。

    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    分享分享0 收藏收藏0 转发到微博
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    回顶部