安装Nginx
> cd /usr/local/nginx/sbin
> ./nginx
安装https模块
进入到你的nginx安装目录下面,默认安装目录是在(/usr/local/nginx),如果你的nginx安装步骤和上面的文章一致的话,那你的目录和我应该是一致的 进入到目录的sbin目录下,输入
./nginx -V
如果出现 (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文件,如图:
接下来使用新的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文件夹里面是你的证书
配置证书和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;
}
}
自己生成的证书浏览器会提示安全信息
|