让web应用使用https进行访问

让web应用使用https进行访问

背景

在网络安全的大背景下,我们公司终于决定升级官网访问,采用https代替http,本文存在三种部署方案,第一种是spring boot项目使用内带tomcat, 第二种是使用nginx部署的项目,第三种使用iis部署的项目。

首先是生成证书,这个可以去各个证书网站购买,本文不讲如何购买,如果我们需要测试的话我们可以在服务器上使用openssl生成一个证书,如果是Windows机器上没有openssl命令,下载安装,百度云下载链接提取码:5kjx,下载后安装自不用说,但是得记住安装路径,安装完了记得配置下环境变量。 打开命令行程序cmd(以管理员身份运行),运行以下命令:

1.创建服务器证书密钥文件 server.key:

openssl genrsa -des3 -out server.key 1024

输入密码,确认密码,自己随便定义,但是要记住,后面会用到。

2.创建服务器证书的申请文件 server.csr

openssl req -new -key server.key -out server.csr

输出内容为:

Enter pass phrase for root.key: ← 输入前面创建的密码

Country Name (2 letter code) [AU]:CN ← 国家代号,中国输入CN

State or Province Name (full name) [Some-State]:BeiJing ← 省的全名,拼音

Locality Name (eg, city) []:BeiJing ← 市的全名,拼音

Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名

Organizational Unit Name (eg, section) []: ← 可以不输入

Common Name (eg, YOUR name) []: ← 此时不输入

Email Address []:xuxiake@163.com ← 电子邮箱,可随意填

Please enter the following ‘extra’ attributes

to be sent with your certificate request

A challenge password []: ← 可以不输入

An optional company name []: ← 可以不输入

4.备份一份服务器密钥文件

cp server.key server.key.bak

5.去除文件口令

openssl rsa -in server.key -out server.key

6.生成证书文件server.crt

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

这个时候服务器根目录下会生成文件server.key 和 server.crt。

1.spring boot支持https 创建WebSecurityConfig类继承WebMvcConfigurationSupport,创建EmbeddedServletContainerFactory bean

@Configuration

public class WebSecurityConfig extends WebMvcConfigurationSupport {

@Bean

public EmbeddedServletContainerFactory servletContainer() {

TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();

Connector connector = new Connector();

connector.setPort(443);

connector.setSecure(true);

connector.setScheme("https");

connector.setProperty("SSLEnabled", "true");

connector.setProperty("keystoreFile", ”server.crt的绝对路径“);

connector.setProperty("keystorePassword", “你创建server.key时的密码“);

tomcat.addAdditionalTomcatConnectors(connector );

return tomcat;

}

}

nginx支持https 首先查看nginx是不是有ssl模块,nginx -V,如果没有看到ssl就重新编译。 重新配置 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module 重新编译,不需要make install安装。否则会覆盖 make 然后复制sbin目录下的nginx文件替换原来文件,再次查看就可以看到支持了。 然后配置config文件,

##同时支持https和http

server {

listen 80 default backlog=2048;

listen 443 ssl;

server_name xuxiake.com;

root /html/index.html;

ssl_certificate server.crt绝对路径;

ssl_certificate_key server.Key绝对路径;

}

多域名支持

server {

listen 443 ssl;

server_name first.com;

root /html/index.html;

ssl_certificate server.crt绝对路径;

ssl_certificate_key server.Key绝对路径;

}

iis添加https访问 iis需要.pfx后缀的证书文件,需要使用openssl合成,命令如下,

openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

1)在服务器上,单击开始 > 运行 > MMC打开控制台。 2)单击文件 > 添加/删除管理单元打开添加/删除管理单元对话框。 3)在可用的管理单元中单击证书 > 添加 > 计算机账户 > 下一步 > 本地计算机(运行此控制台的计算机) > 完成。 4)单击个人 > 所有任务 > 导入打开证书导入向导对话框。 5)单击浏览导入下载的PFX格式证书文件。一路下一步直到输入密码,输入你创建server.key时的密码 6)勾选根据证书类型,自动选择证书存储并单击下一步完成证书的导入。 7)打开IIS8.0 管理器面板,定位到待部署证书的站点,单击绑定。 8)在网站绑定对话框中单击添加 > 选择https类型 > 端口选择443 > 导入的IIS证书名称 > 确定。

总结

写到最后,我们这么配置后一切是都生效了,但是还有一个问题就是用户直接输入域名,浏览器默认是http的,所以不管是iis还是nginx,我们都需要写重定向,这个大家就百度吧。

相关作品

抖音不感兴趣怎么取消 bt.bt365

抖音不感兴趣怎么取消

❤️ 186 📅 07-09
在线答题的考试软件有哪些,哪个好用? 365500元大写

在线答题的考试软件有哪些,哪个好用?

❤️ 132 📅 06-29