• nginx安装https


    安装Nginx

    • 1.下载nginx

    • 2.解压

      • > tar zxf nginx-xxxx.tar.gz
    • 3.安装编译安装所需要的依赖

      • > yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
    • 4.编译安装(默认设置)

      > cd nginx-xxx
      > ./configure
      > make && make install
      
    • 5.查看安装目录

      > whereis nginx
      	
      nginx: /usr/local/nginx
      
    • 6.启动Nginx

    	> cd /usr/local/nginx/sbin
    	> ./nginx
    
    • 7.查看Nginx是否运行

      > ps -ef | grep nginx
      
      root 4772 1 0 18:27 ? 00:00:00 nginx: master process ./nginx
      nobody 4773 4772 0 18:27 ? 00:00:00 nginx: worker process
      
      
    • 8.访问Nginx

      • http://localhost
      • nginx 端口默认监听80

    安装https模块

    进入到你的nginx安装目录下面,默认安装目录是在(/usr/local/nginx),如果你的nginx安装步骤和上面的文章一致的话,那你的目录和我应该是一致的
    进入到目录的sbin目录下,输入

    ./nginx -V 
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uaIDfVsl-1664358417152)(http://192.192.192.234:4999/server/index.php?s=/api/attachment/visitFile/sign/68e2c855b779c2dcbb08a79c6b217ab1)]

    如果出现 (configure arguments: --with-http_ssl_module), 则已安装(下面的步骤可以跳过,直接进行第五步)。

    一般情况下都是不存在ssl模块的,接下来进入到你的解压缩后的nginx目录,注意这里不是nginx安装目录,是解压缩后的目录,我的是在(/opt/src/nginx-1.20.2),进入目录后,输入

    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
    

    接下来执行

    #切记不要执行make install,否则会重新安装nginx
    make
    

    上述操作执行完成以后,你的目录下会出现objs文件夹,文件夹内存在nginx文件,如图:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wNoSyMk2-1664358417155)(http://192.192.192.234:4999/server/index.php?s=/api/attachment/visitFile/sign/a675db8a3c81bfabe05b6256af5ecfe1)]

    接下来使用新的nginx文件替换掉之前安装目录sbin下的nginx,注意这里的替换的时候可以先将之前的文件备份下,停掉nginx服务

    #停止nginx服务
    /usr/local/nginx/sbin/nginx -s stop
    
    #替换之前的nginx
    cp /opt/src/nginx-1.20.2/objs/nginx /usr/local/nginx/sbin
    
    

    成功之后,进入到nginx安装目录下,查看ssl时候成功

    /usr/local/nginx/sbin/nginx -V
    

    可以看到这里出现了configure arguments: --with-http_ssl_module 证明已经安装成功
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3O6v2zE8-1664358417160)(http://192.192.192.234:4999/server/index.php?s=/api/attachment/visitFile/sign/fa69557e5d4ca2f7a82937f1b6965b65)]

    创建https证书

    在你的ng安装目录下新建一个httpsgenerate.sh脚本复制一下内容注意修改参数

    #!/bin/bash
    
    passwd=eureka@123
    name=eureka
    temppath=`pwd`
    jdk_bin=/usr/lib/java/jdk1.8.0_241/jre/bin
    keytool -help
    if [ $? -eq 0 ];then
        jdk_bin=`which keytool`
        echo -e "\033[1;32;40m INFO `basename $0` installed jdk  \033[0m" 
    else     
        ${jdk_bin}/keytool -help
        if [ $? -eq 0 ];then
        	echo -e "\033[1;32;40m INFO `basename $0` installed jdk  \033[0m" 
        else 
           	echo -e "\033[1;31;40m ERROR `basename $0` failed  not install jdk & no keytool \033[0m" 
      	exit 2
        fi
    fi
    
    openssl -v
    if [ $? -eq 0 ];then
        echo -e "\033[1;32;40m INFO `basename $0` installed openssl  \033[0m" 
    else 
        echo -e "\033[1;31;40m ERROR `basename $0` failed  not install openssl \033[0m" 
        exit 2
    fi
    
    
    FILE_NAME="cert"
    mkdir ${FILE_NAME}
    home="${temppath}/${FILE_NAME}"
    #:: 生成jks
    echo -e "\033[1;32;40m gen jks&cer  \033[0m" 
    mkdir ${home}/jks
    cd ${home}/jks
    
    ${jdk_bin} -genkeypair -alias ${name} -keystore ${name}.jks -storetype pkcs12 -keypass ${passwd} -storepass ${passwd}  -keyalg RSA -keysize 2048 -validity 365 -dname "CN=http://192.192.192.246,OU=xx,O=dy, L=nb,ST=zj,C=china"
    
    ${jdk_bin} -exportcert -keystore ${name}.jks -file ${name}.cer -alias ${name} -storepass ${passwd}
    
    
    echo -e "\033[1;32;40m 转换jks->pfx  \033[0m" 
    mkdir ${home}/pfx
    cd ${home}/pfx
    
    ${jdk_bin}  -importkeystore -srckeystore ${home}/jks/${name}.jks -destkeystore ${home}/pfx/${name}.pfx -srcstoretype PKCS12 -deststoretype PKCS12 -srcstorepass ${passwd} -deststorepass ${passwd}
    
    
    
    echo -e "\033[1;32;40m  转换pfx->pem/key \033[0m" 
    mkdir ${home}/pem
    cd ${home}/pem
    
    openssl pkcs12 -in ${home}/pfx/${name}.pfx -nodes -out ${home}/pem/${name}.pem -password pass:${passwd}
    openssl rsa -in ${home}/pem/${name}.pem -out ${home}/pem/${name}.key
    
    cd ${temppath}
    ${jdk_bin} -list -v -keystore ${home}/jks/${name}.jks -storepass ${passwd}
    
    修改脚本
    • jdk_bin=你的java安装目录指定到bin
    • CN=等于你ng服务器地址
    • chmod 777 httpsgenerate.sh 赋权限 然后执行 ./httpsgenerate.sh,会在ng安装目录生成cert文件夹里面是你的证书
    去除换行
    sed -i 's/\r//' cert.sh
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTVdNmd4-1664358417162)(http://192.192.192.234:4999/server/index.php?s=/api/attachment/visitFile/sign/dee1bcdfe743cc68c55b7a461d987d55)]

    配置证书和https服务

    server {
      #监听443端口
        listen 443 ssl;
        #你的域名
        server_name localhost;
        #ssl证书的pem文件路径
        ssl_certificate  ../cert/pem/eureka.pem;
        #ssl证书的key文件路径
        ssl_certificate_key ../cert/pem/eureka.key;
    
        location / {
    	   alias   /usr/local/nginx/;
    	   index  index.html;
    	   try_files $uri $uri/ /index.html =404;
     	}
    }
    
    

    自己生成的证书浏览器会提示安全信息
    在这里插入图片描述

  • 相关阅读:
    约瑟夫环真的那么难吗?
    java-net-php-python-ssm二手商品交易平台的设计与实现(2)计算机毕业设计程序
    错误,LNK1107,文件无效或损坏
    kubernetes自定义hosts域名解析
    Apple 已弃用 NavigationView,使用 NavigationStack 和 NavigationSplitView 实现 SwiftUI 导航
    Jetson 设备docker全局代理映射方法以及迁移到ssd硬盘
    学习 TensorFlow:构建和训练机器学习模型的利器
    【计算机网络】IP协议分析
    P19 JToolBar工具栏
    C语言学习:3、数据输入
  • 原文地址:https://blog.csdn.net/BeiShangBuZaiLai/article/details/127094019