阿里云申请证书
我是在阿里云申请的证书,也可以在七牛等平台申请证书。
登陆阿里云-》控制台
点击购买可以申请免费的证书
申请成功:
点击下载
将证书下载到本地
要通过服务器类型选择下载。
nginx服务器配置证书
vim nginx.conf
配置web服务器:
location / {
root /wms/website;
index index.html index.htm;
}
web文件的目录为/wms/website,只能用上面的root和index的方式。当如下配置的时候无法访问,不知道为什么。
location / { #allow all; #root /wms/erp_ui; #index index.html index.htm; alias /wms/erp_ui; try_files $uri $uri/ @router; }
servicer中指定证书的位置,详细配置如下:
server {
listen 443;
server_name localhost zhirui-tech.com www.zhirui-tech.com;
ssl_certificate cert/2929712_zhirui-tech.com.pem;
ssl_certificate_key cert/2929712_zhirui-tech.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl on;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;
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;
location / {
root /wms/website;
index index.html index.htm;
}
#location / {
# alias /wms/website;
# try_files $uri $uri/ @router;
#}
}
ssl_开头的都需要配置。
ssl_certificate
部分配置的是相对路径,也就是在nginx的安装目录下:[root@izwz9hy3mj62nle7573jv5z cert]# pwd /etc/nginx/cert [root@izwz9hy3mj62nle7573jv5z cert]# ll 总用量 12 -rwxrwxr-x 1 root root 1679 10月 12 17:19 2929712_zhirui-tech.com.key -rwxrwxr-x 1 root root 4067 10月 12 17:35 2929712_zhirui-tech.com_nginx.zip -rwxrwxr-x 1 root root 3688 10月 12 17:19 2929712_zhirui-tech.com.pem
重启nginx:
/usr/sbin/nginx -c /etc/nginx/nginx.conf -s reload
tomcat服务器配置证书
编辑tomcat/conf/server.xml
文件,进行如下配置:
<Connector port="443"
protocol="org.apache.coyote.http11.Http11Protocol"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="pfx所在地的完整路径"
keystoreType="PKCS12"
keystorePass="图中你自己秘钥所在地"
clientAuth="false"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
配置后重启tomcat即可。
springboot配置证书
证书转换
springboot是内置的tomcat,需要用JKS证书类型。在第一步的 阿里云申请证书 步骤中下载证书的时候,选择tomcat类型,点击 帮助 参考如何转换成JKS证书。
拷贝密钥
从下载的压缩包中的 Tomcat 目录将证书(文件后缀为jks
)拷贝到 SpringBoot 工程的 resources
目录下即可:
配置springboot配置文件
证书拷贝完整后,打开配置文件 application.yml
,然后修改网站的端口为 443
,key-store-password
可以在证书压缩包的 Tomcat 文件夹下的文本文件中找到,此外配置一下 SSL 证书的类型以及路径等信息即可:
server:
address: 0.0.0.0
port: 443
ssl:
enabled: true
key-store: classpath:javasea.com.jks
key-store-password: xxxxxxxxxxxx
key-store-type: JKS
至此便可以启动运行项目,可以在地址栏输入 https://yourdomain
即可访问。
将 HTTP 请求重定向到HTTPS
网站虽然升级到了 HTTPS,但是很多老用户并不知情,当他们访问旧版的 HTTP 地址时会发现网站已经无法访问,需要改造项目将http重定向到https。
添加 HTTP 端口配置
首先在配置文件中添加自定义的 HTTP 端口配置:
http-port: 80
建立重定向关系
新建一个配置类 HttpsConfiguration
,在类中将配置文件中自定义的 HTTP 端口和 HTTPS 的端口都注入进来,然后创建一个新的 Connector
来处理 HTTP 请求,同时设置 Connector
的端口为注入的 HTTP 端口,重定向端口(setRedirectPort
)为新的 HTTPS 端口。
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class HttpsConfiguration {
@Value("${http-port}")
private int port;
@Value("${server.port}")
private int sslPort;
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
//上面代码中需要特别注意的是,TomcatServletWebServerFactory 必须要在其 postProcessContext 方法中添加 HTTP 的匹配范围 addPattern("/*"),否则重定向无效
@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(redirectConnector());
return tomcat;
}
private Connector redirectConnector() {
Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
connector.setScheme("http");
connector.setPort(port);
connector.setSecure(false);
connector.setRedirectPort(sslPort);
return connector;
}
}
七牛云配置证书和CDN
阿里云申请的证书,需要上传到七牛,点击上传自有证书
,将阿里云下载的证书解压,里面的两个文件里面有内容和私钥,填写到下图的证书内容
和证书私钥
即可。
具体的填写方式记不清了,多试几次就可以了,错误的时候会有提示。
配置CDN加速
配置完成,下图配置了两种加速场景:
复制cname
,下面需要将cname配置到域名服务器
域名服务器配置cname
加速域名配置完成后,需要到域名申请的地方配置cname,我是在阿里云购买的域名,所以去阿里云配置。
进入阿里云控制台,进入域名管理:
点击解析
点击 添加记录
,配置cname
, 粘贴上在七牛云复制的cname
。记录类型选择cname
,主机记录根据记录值来填写:
测试CDN加速
windows系统可以通过Win+R 或 点击左下角的“开始”按钮打开“开始”菜单,打开“运行”,输入cmd回车。
在命令行模式下输入nslookup 您的加速域名
,在结果中可以看到您复制的cname值即可。下面测试中域名zhixxx-xxch.com
从cdn进行解析的,说明加速成功;域名x.zxxmxo.com
加速失败。
C:\Users\Administrator>nslookup zhixxx-xxch.com
服务器: UnKnown
Address: 192.168.0.1
非权威应答:
名称: tinychinacdnweb.qiniu.com.w.kunlunno.com
Addresses: 240e:95c:2002:1:3::3fd
240e:95c:2002:1:3::3fe
124.225.167.226
116.253.191.223
116.253.29.227
121.207.229.171
116.253.29.232
116.253.29.226
116.253.29.225
121.207.229.172
121.207.229.204
121.207.229.203
171.111.154.208
124.225.167.231
124.225.167.232
171.111.154.207
116.253.191.222
124.225.167.225
Aliases: zhixxx-xxch.com
zhixxx-xxch.com.qiniudns.com
dt003.china.line.qiniudns.com
C:\Users\Administrator>nslookup x.zxxmxo.com
服务器: UnKnown
Address: 192.168.0.1
非权威应答:
名称: x.zxxmxo.com
Address: 121.40.96.83