zoukankan      html  css  js  c++  java
  • 用JDK生成Nginx可用的https自签名证书及常用配置

    给NginX配置,利用jdk生成的自签名证书

    测试环境:Windows10、nginx-1.14.0
    步骤

    一、生成证书

    这里使用自己生成的免费证书。在${JAVA_HOME}/bin 下可以看到keytool.exe,在改目录打开cmd然后输入:

    keytool -genkey -v -alias tomcat -keyalg RSA -keystore d:local.keystore -validity 36500
    

    生成别名为 tomcat 名称为local.keystore的证书,有效期100年。然后密码什么的根据自己需求填写。
    生成证书过程中:【你的名字】对应网站域名或IP。

    二、转换证书

    常用证书格式:JKS(.keystore),微软(.pfx),OPSSL之PEM(.key + .crt),其中tomcat使用JKS格式,nginx使用PEM格式。

    由于生成的证书是jks格式,nginx不能直接用,需要要转成PEM格式,这要用到jks2pfx工具进行转换。
    b.下载jks2pfx工具解压后,在解压目录打开cmd,然后输入:

    JKS2PFX D:local.keystore 123456 tomcat exportfile D:Program FilesjavaJDK7jre7in
    

    jks2pfx的命令格式:JKS2PFX keystore password alias exportname Java_Runtime_Folder

    c.上面的命令是把d盘下的local.keystore(根据你自己keystore的位置来写)中别名为tomcat、密码是123456的SSL证书导出,运行后将在jks2pfx的解压目录下产生3个文件 exportfile.key、exportfile.crt、exportfile.pfx。本文只要用到exportfile.key、exportfile.crt,把这两个文件复制到${NGINX_HOME}/conf目录下。

    jks2pfx工具

    1. 下载:JKS2PFX转换工具。
    2. 将压缩包解开到 c:jks2pfx 目录下。
    3. 运行以下命令:JKS2PFX <导出文件名> [Java Runtime的目录]
      说明:

    KeyStore文件:指Tomcat保存SSL证书的文件
    KeyStore密码:KeyStore文件对应的密码
    Alias别名:  生成证书CSR时,所起的Alias别名
    导出文件名: 准备导出的文件名称 (不要带扩展名)
    JavaRuntime目录(可选): 指包含Java.exe和keytool.exe的目录,如:c:progra~1Javajre1.5.0_06in

    例如:

    JKS2PFX server.jks 123456 tomcat exportfile c:progra~1Javajre1.5.0_06in
    

    该命令将server.jks中别名为tomcat的SSL证书导出,运行后将产生3个文件:
    exportfile.key、exportfile.crt、exportfile.pfx;
    其中exportfile.pfx可以导入到微软的IIS中使用;
    exportfile.key和exportfile.crt可用于Apache、Nginx或者其他OpenSSL兼容的系统。

    可以用下面命令查看PFX文件内容:

    openssl pkcs12 -info -in exportfile.pfx
    

    三、配置nginx

    修改nginx.conf,把要实现https的server像下面这样配置:
    HTTPS server

    server {
       ssl on;
       listen       443 ssl;
       server_name  localhost;
    
       ssl_certificate      exportfile.crt;
       ssl_certificate_key  exportfile.key;
    
       ssl_session_cache    shared:SSL:10m;
       ssl_session_timeout  10m;
    
       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;
    }
    

    重启nginx生效。

    http的80端口请求自动重定向到https的443

    server {
        listen 80;
        server_name yang_host;
        return 301 https://$server_name$request_uri;
    }
    
    server {
     	ssl on;
        listen 443;
        server_name yang_host;
    }
    
  • 相关阅读:
    机器学习-分类算法-决策树,随机森林10
    机器学习-分类算法-模型选择与调优09
    机器学习-分类算法-精确率和召回率08
    机器学习-分类算法-朴素贝叶斯算法07
    机器学习-分类算法-K-近邻算法06
    java读取自定义配置文件并引用
    kafka发布消息报错LEADER_NOT_AVAILABLE
    Kettle位置参数(Argument)、命名参数(Parameter)、变量(Variable)
    kettle里的两个参数和一个变量
    如何在命令行下运行kettle的作业(job)和转换(transform)
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/12656641.html
Copyright © 2011-2022 走看看