1、nginx配置https
nginx配置https需要私钥和证书,使用openssl生成私钥和自签证书。
首先安装openssl
yum -y install openssl openssl-devel
新建存储证书和密钥的目录,并进入该目录
mkdir /usr/nginx/cer
cd /usr/nginx/cer
生成私钥和自签证书
openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt -subj "/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=当前服务器的IP/emailAddress=test@qq.com"
// 简述参数
-newkey 自动生成密钥,rsa:2048 使用2048位RSA非对称加密算法,-nodes 不加密密钥,-keyout rsa_private.key 生成私钥rsa_private.key。不要生成公钥,签发的证书中包含了公钥。
-x509 证书类型是自签证书,-days 365 证书有效期是365天,-out cert.crt 生成cert.crt文件,cert.crt是自签证书。
-subj 生成证书的信息,包括国家(只能填写两个字符)、省/洲、市、公司、部门、个人信息(填写服务器IP即可)、邮箱。
查看目录下私钥和证书是否已生成;
修改nginx配置文件
ssl_certificate "/usr/nginx/cer/cert.crt";
ssl_certificate_key "/usr/nginx/cer/rsa_private.key";
也有配置比较全的参数
ssl on;
ssl_certificate "/usr/nginx/cer/cert.crt";
ssl_certificate_key "/usr/nginx/cer/rsa_private.key";
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
# ssl_server_tokens off;
# ssl_ciphers HIGH:!aNULL:!MD5;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
重启nginx ?
systemctl restart nginx
// 或者 cd到nginx安装路径下
nginx -s?reload
最后 https://IP:端口/ 访问即可。
2、tomcat配置https
首先创建证书,使用JDK自带的keytool工具来生成证书
// cd 到jdk的安装目录 keytool
cd /usr/java/bin/
./keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/tomcat/cer/tomcat.keystore -validity 6666
// tomcat 指的是别名 -validity 6666 指的是有效时间
// tomcat.keystore 需要生成的证书,将证书根据开发要求放到指定位置
输入密钥库口令: test
再次输入新口令: test
您的名字与姓氏是什么?
[Unknown]: 192.168.1.100 这里最好写服务器的IP或者域名
您的组织单位名称是什么?
[Unknown]: test
您的组织名称是什么?
[Unknown]: test 可随意写
您所在的城市或区域名称是什么?
[Unknown]: beijing 可随意写
您所在的省/市/自治区名称是什么?
[Unknown]: beijing 可随意写
该单位的双字母国家/地区代码是什么?
[Unknown]: cn
CN=www.bo.org, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn是否正确?
[否]: y
// 然后要求我们输入tomcat的主密码,我们设置跟上面第一次输入的密码相同,按回车
// 这里会提示
keytool -importkeystore -srckeystore /usr/tomcat/cer/tomcat.keystore -destkeystore /usr/tomcat/cer/tomcat.keystore -deststoretype pkcs12
// 如果需要导出证书的可以执行
keytool -export -alias tomcat -keystore /usr/tomcat/cer/tomcat2.keystore -file /usr/tomcat/cer/tomcat.cer
修改tomcat配置文件server.xml
<!-- 443访问端口 -->
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="生成的证书路径,如上面配置的/usr/tomcat/cer/tomcat.keystore"
keystorePass="证书密码,如上面配置的test"
clientAuth="false" sslProtocol="TLS"
/>
如果是springboot项目需要配置
需要在启动类加如下代码
@Bean
public Connector connector(){
Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(80);
connector.setSecure(false);
connector.setRedirectPort(8080); #这里的8080可更改为项目需要端口,其它不做修改
return connector;
}
@Bean
public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector)
{
TomcatServletWebServerFactory tomcat=new TomcatServletWebServerFactory(){
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint=new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection=new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(connector);
return tomcat;
}
然后修改项目的配置文件
## 这里配置的是证书存放的位置
server.ssl.key-store=/usr/tomcat/cer/tomcat.keystore
## 这里是查看证书需要的密钥
server.ssl.key-store-password=test
## 这是以上步骤申请证书时的那个别名
server.ssl.key-alias=tomcat
## 这里的PKCS12格式配置的是一种互联网标准
server.ssl.key-store-type=PKCS12
重新启动 https访问
|