阿里云官网:https://account.aliyun.com/login/login.htm
前往阿里云控制台下载域名证
证书分为两个
其中_tomcat.zip就是我们需要用到的,里面包括.pfx文件和密钥
证书文件pfx目录存放于:D:/Tomcat8.0/cert/www.*****.com.cn.pfx
证书文件jks 目录存放于:D:/Tomcat8.0/cert/www.*****.com.cn.jks
修改相同配置文件:D:/Tomcat8.0/conf/server.xml
文件前缀我在使用的时候已去除,方便替换,如:10169624_www.****.com.cn
去除了10169624_
参考网址:https://blog.csdn.net/weixin_43246026/article/details/125804546
将解压后的pfx文件复制到这个目录下
然后修改conf/server.xml文件
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="cert/www.*****.com.cn.pfx"
keystorePass="12345678"
clientAuth="false" sslProtocol="TLS" />
keystoreFile:就是我们pfx文件的路径
keystorePass:则是密钥
参考网址:https://www.ab62.cn/article/22429.html
使用JDK生成,我们需要到本地jdk路径bin下,然后将解压的pfx文件复制到这里,并cmd打开这个目录的窗口
注:需要输入三次密钥,我们到解压的文件中将pfx-password.txt内的密码复制,然后粘贴上去即可,粘贴后直接回车,密码不会显示出来的,看起来就是空格,三次粘贴回车即可生成jks
命令:
keytool -importkeystore -srckeystore 10169624_www.****.com.cn.pfx -srcstoretype pkcs12 -destkeystore 10169624_www.****.com.cn.jks -deststoretype JKS
生成后的文件,生成后的jks文件我们需要复制到Tomcat目录下,
如:D:/Tomcat8.0/cert/www.*****.com.cn.jks
生成jks后,我们需要修改tomcat的conf/server.xml文件,此处的配置方式为多域名配置,
其中Connector标签行配置的域名是默认域名,内的SSLHostConfig标签则是用来配置多域名的;
我们操作第一个www.开头的,将文件jks文件路径填充,并将keystorePass的密钥填充。
其中_nginx.zip就是我们需要用到的,里面包括.key和.pem文件
文件前缀我在使用的时候已去除,方便替换,如:10169624_www.****.com.cn
去除了10169624_
证书文件目录存放于:
F:\nginx\conf\cert\www.*****.com.cn.key
F:\nginx\conf\cert\www.*****.com.cn.pem
修改配置文件:F:\nginx\conf\nginx.conf
请复制下拉耐心查看,实际用的并不多,只是注释的也被我捞上来了而已
(其中 zy_cert\zy***.com.jks 是另一个域名的证书,此处并未相关,只是例子,需注意)
<Server port="8018" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
GlobalNamingResources>
<Service name="Catalina">
<Executor name="tomcatThreadPool"
namePrefix="HTTP-8081-exec-"
prestartminSpareThreads="true"
maxThreads="5000"
maxQueueSize="100"
minSpareThreads="50"
maxIdleTime="10000"
/>
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="8000"
URIEncoding="UTF-8" maxHttpHeaderSize="8192"
relaxedQueryChars="{,},[,],\,^" executor="tomcatThreadPool"
redirectPort="443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" clientAuth="false"
keystoreFile="cert\www.****.com.cn.jks" keystorePass="123456"
defaultSSLHostConfigName="www.****.com.cn"
sslProtocol="TLS" URIEncoding="UTF-8">
<SSLHostConfig hostName="www.****.com.cn">
<Certificate certificateKeystoreFile="cert\www.****.com.cn.jks"
certificateKeystorePassword="123456"
type="RSA"/>
SSLHostConfig>
<SSLHostConfig hostName="saas.zy***.com">
<Certificate certificateKeystoreFile="zy_cert\zy***.com.jks"
certificateKeystorePassword="123456"
type="RSA"/>
SSLHostConfig>
Connector>
<Engine name="Catalina" defaultHost="www.****.com.cn">
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto"
protocolHeaderHttpsValue="https"/>
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
Realm>
<Host name="www.****.com.cn" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Alias>www.****.com.cnAlias>
<Alias>saas.zy***.comAlias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
Host>
Engine>
Service>
Server>
(其中 nginx/cloudRoot 是项目静态文件目录)
#user nobody;
worker_processes 8;#设置与CUP核数一致
#错误日志存放目录
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 65535;#单个后台worker process进程的最大并发链接数
}
stream {
upstream bitbucket-ssh {
server localhost:27017; #MongoDB 服务
}
}
http {
include mime.types;#文件扩展名与类型映射表
default_type application/octet-stream;#默认文件类型
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
client_max_body_size 1024m;
sendfile on;
#tcp_nopush on;
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout 60;#连接超时时间,单位是秒
#keepalive_timeout 5;
#开启gzip压缩功能
gzip on;
#upstream表示负载服务器池,定义名字为backend_server的服务器池
#项目 - http
upstream linuxidc{#服务器集群名字
ip_hash;
server localhost:8081 weight=2 max_fails=3 fail_timeout=60s; #服务器配置 weight是权重的意思,权重越大,分配的概率越大。
server localhost:8082 weight=2 max_fails=3 fail_timeout=60s; #服务器配置 weight是权重的意思,权重越大,分配的概率越大。
}
#项目 - https
upstream linuxidc_443{#服务器集群名字
ip_hash;
server localhost:8443 weight=2 max_fails=3 fail_timeout=60s; #服务器配置 weight是权重的意思,权重越大,分配的概率越大。
server localhost:8444 weight=2 max_fails=3 fail_timeout=60s; #服务器配置 weight是权重的意思,权重越大,分配的概率越大。
}
#----
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
#-----
server {
listen 80;
server_name 172.18.93.221;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://linuxidc;
proxy_redirect default;
proxy_connect_timeout 5s; #默认值60s, nginx连接到后端服务器的连接超时时间
proxy_set_header Host $host:80;
proxy_set_header X-Forward-For $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
#获取客户端真实IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#配置静态文件
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|apk|zip|exe|doc|pdf|xlsx|jade|xls|txt|mp4|json|so|mp3)$ {
root /nginx/cloudRoot/;add_header Cache-Control no-store;
expires 24h;
add_header Access-Control-Allow-Crigin http://www.joy.com; # 允许跨域访问的域名
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS; # 配置请求方式
}
error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 504 506 /404.html;
location = /50x.html {
root html;
}
location = /404.html {
root html;
}
location = /403.html {
root html;
}
}
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name www.****.com.cn; #证书绑定的域名。
root html;
ssl_certificate cert/www.****.com.cn.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/www.****.com.cn.key; #需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://linuxidc_443;
proxy_redirect default;
proxy_connect_timeout 5s; #默认值60s, nginx连接到后端服务器的连接超时时间
proxy_set_header Host $host:443;
proxy_set_header X-Forward-For $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
#获取客户端真实IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#配置静态文件
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|apk|zip|exe|doc|pdf|xlsx|jade|xls|txt|mp4|json|so|mp3)$ {
root /nginx/cloudRoot/;add_header Cache-Control no-store;
#expires 24h;
#add_header Access-Control-Allow-Crigin http://www.joy.com; # 允许跨域访问的域名
#add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS; # 配置请求方式
}
error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 504 506 /404.html;
location = /50x.html {
root html;
}
location = /404.html {
root html;
}
location = /403.html {
root html;
}
}
}