zoukankan      html  css  js  c++  java
  • OpenSSL 生成自定义证书

    前言

    本文用来记录通过OpenSSL生成自定义证书并在浏览器设置可信任

    准备

    • Linux CentOS7 系统
    • nginx 1.12.2
    • Windows 10
    • IE 11
    • chrome 71

    OpenSSL配置

    在linux系统中修改OpenSSL配置是为了,让chrome浏览器对为网站可信任

    1. 拷贝OpenSSL配置文件准备修改

      1
      2
      # cd /etc/pki/tls/
      # cp openssl.cnf openssl_m.cnf
    2. 修改openssl_m.cnf文件

      1
      # vi /etc/pki/tls/openssl_m.cnf

      a. 找到[ req ] 段落,添加req_extentions = v3_req配置:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      ####################################################################
      [ req ]
      default_bits = 2048
      default_md = sha256
      default_keyfile = privkey.pem
      distinguished_name = req_distinguished_name
      attributes = req_attributes
      x509_extensions = v3_ca # The extentions to add to the self signed cert
      #需要添加的配置
      req_extentions = v3_req

      b. 添加v3_req配置信息

      1
      2
      3
      4
      5
      6
      7
      8
      [ v3_req ]
      # Extensions to add to a certificate request
      basicConstraints = CA:FALSE
      keyUsage = nonRepudiation, digitalSignature, keyEncipherment
      #需要添加的配置
      subjectAltName = @alt_names

      c. 添加alt_names配置信息,可以添加多个

      1
      2
      [ alt_names ]
      DNS.1 = www.test.com

      注:这里填入的即为Subject Alternative Names的域名名称

    生成证书

    直接用脚本生成

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #!/bin/sh
    # create self-signed server certificate:
    大专栏  OpenSSL 生成自定义证书s="line">read -p "Enter your domain [www.example.com]: " DOMAIN
    echo "Create server key..."
    openssl genrsa -des3 -out $DOMAIN.key 2048
    echo "Create server certificate signing request..."
    SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN"
    #openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr -extensions v3_req
    openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr
    echo "Remove password..."
    mv $DOMAIN.key $DOMAIN.origin.key
    openssl rsa -in $DOMAIN.origin.key -out $DOMAIN.key
    echo "Sign SSL certificate..."
    openssl x509 -req -days 3650 -extfile /etc/pki/tls/openssl_m.cnf -extensions v3_req -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt
    echo "TODO:"
    echo "Copy $DOMAIN.crt to /etc/nginx/ssl/$DOMAIN.crt"
    echo "Copy $DOMAIN.key to /etc/nginx/ssl/$DOMAIN.key"
    echo "Add configuration in nginx:"
    echo "server {"
    echo " ..."
    echo " listen 443 ssl;"
    echo " ssl_certificate /etc/nginx/ssl/$DOMAIN.crt;"
    echo " ssl_certificate_key /etc/nginx/ssl/$DOMAIN.key;"
    echo "}"

    关键点就是:-extfile /etc/pki/tls/openssl_m.cnf -extensions v3_req给证书添加上扩展属性

    配置nginx

    1. 把生成的xxx.crt 和xxx.key 拷贝到/etc/nginx/ssl/
    2. 修改nginx.conf

      1
      2
      3
      4
      5
      6
      7
      server {
      ssl on;
      ssl_certificate /etc/nginx/ssl/www.test.com.crt;
      ssl_certificate_key /etc/nginx/ssl/www.test.com.key;
      listen 443 default_server;
      listen [::]:443 default_server;
      }
    3. 重启nginx服务

    导入证书

    1. 把www.test.com.crt拷贝到windows系统中
    2. 双击www.test.com.crt文件打开
    3. 点击“Install Certificate”
    4. 选择“Local Machine” 点击“Next”
    5. 选择“Place all certificates in the following store” 点击“Browser”
    6. 选择“Trusted Root Certification Authorities” 点击“OK”
    7. 点击“Next” 点击“Finish”

    再次访问网站

    参考资料

    1. OpenSSL创建的自签名证书在chrome端无法信任
    2. OpenSSL生成v3证书方法及配置文件
    3. 给Nginx配置一个自签名的SSL证书
    4. 脚本
  • 相关阅读:
    deep learning 以及deep learning 常用模型和方法
    神经网络和误差逆传播算法(BP)
    机器学习常见面试题整理
    Xcode8更新CocoaPods报错解决办法
    iOS、swift、React Native学习常用的社区、论坛
    iOS 一个app跳转另一个app并实现通信(如A跳到B并打开B中指定页面)
    Xcode LLDB Debug教程
    BLOCK封装带菊花的网络请求
    AFN的初步封装(post、GET、有无参数)
    银行卡格式化输出及后四位显示
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12239873.html
Copyright © 2011-2022 走看看