如何申请https证书,搭建https网站

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何申请https证书,搭建https网站相关的知识,希望对你有一定的参考价值。

1、部署HTTPS证书,首先确保自己网站使用的是独立服务器或云服务器。
2、淘宝搜索Gworg获取证书,并且按照机构要求验证。
3、拿到信任证书后,让机构检测服务器环境或者说明,然后拿到环境安装教程安装。
4、当然在搭建之前,请确保HTTP网站可以访问。
参考技术A 想要搭建https网站,需要具备域名、空间、https证书等要素。https证书申请流程如下:
第一步,生成并提交CSR(证书签署请求)文件
CSR文件一般都可以通过在线生成(或服务器上生成),申请人在制作的同时系统会产生两个秘钥,公钥CSR和密钥KEY。选择了SSL证书申请之后,提交订单并将制作生成的CSR文件一起提交到证书所在的CA颁发机构。
第二步,CA机构进行验证
CA机构对提交的SSL证书申请有两种验证方式:
第一种是域名认证。系统自动会发送验证邮件到域名的管理员邮箱(这个邮箱是通过WHOIS信息查询到的域名联系人邮箱)。管理员在收到邮件之后,确认无误后点击我确认完成邮件验证。所有型号的SSL证书都必须进行域名认证。
第二种是企业相关信息认证。对于SSL证书申请的是OV SSL证书或者EV SSL证书的企业来说,除了域名认证,还得进行人工核实企业相关资料和信息,确保企业的真实性。
第三步,CA机构颁发证书
由于SSL证书申请的型号不同,所验证的材料和方式有些区别,所以颁发时间也是不同的。
如果申请的是DV SSL证书最快10分钟左右就能颁发。如果申请的是OV SSL证书或者EV SSL证书,一般3-7个工作日就能颁发。

https网站的搭建

  现在很多网站都需要从原先的http协议升级到https协议,最近对我们网站进行了升级改动,在此做下记录。

  若要使网站变成https协议首先需要申请SSL证书,由于我们网站较为依赖微信,所以我查看微信官网用的是GeoTrust的证书,所以我在网上找到了一家代理GeoTrust证书的网站(https://www.myssl.cn/)。在此网站购买了相应证书(由于我们有多个子域名,所以我们购买的是通配符域名证书)后在订单页可以下载CRT文件(私钥 *.key 文件会在购买的过程中提供下载,后续安装按照具体服务器情况可以参照 https://www.myssl.cn/ssl/install.html 。

tomcat安装

tomcat服务器上面需要一个 JKS文件,JKS(Java Keystore)文件是Tomcat用来管理和使用SSL证书的文件格式。将收到的server.crt和server.key文件,到JKS在线合成工具(https://www.myssl.cn/tools/merge-jks-cert.html)合成一个新的JKS文件,这里面有两个参数需要填写:1.别名:导入到JKS中的密钥对的索引名称(在tomcat的server.xml配置文件中需要用到),2.密码:访问JKS的密码,需要在Tomcat配置文件中写入。将合成的JKS文件放到tomcat目录下的conf文件夹下,也就是和server.xml同一个文件夹,放好之后修改server.xml配置如下:

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="200"

  scheme="https" secure="true" SSLEnabled="true" clientAuth="false" sslProtocol="TLS"

  keystoreFile="/usr/apache-tomcat-7.0.67/conf/geotrustssl.jks" keystorePass="密码" />

tomcat相关配置设置好之后到java项目中在web.xml中加入以下代码(此段代码是设置http自动转为https)

<security-constraint>
  <web-resource-collection>
    <web-resource-name>securedapp</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>

至此单服务器(无负载均衡)https相关所有配置都已完成。

 

tomcat+负载均衡 安装

若是使用阿里云的负载均衡则需要在阿里云负载均衡上面配置证书,不用生成JKS文件放到tomcat下面。

1.创建证书

 

 

证书内容:将包含中间证书的CRT文件内容全部复制并粘贴。

私钥:将 *.key文件复制并粘贴

 

2.部署证书

在“负载均衡”菜单点击“实例管理”,选择需要部署证书的实例,点击“管理”。选择“添加监听”:“前端协议”选择“HTTPS”:“443”,后端协议”选择“80”,“服务器证书”选择刚刚上传的服务器证书,在高级配置里面选择“SLB监听协议”,勾选了此选项后在request请求头里面可以通过X-Forwarded-Proto来获取前端协议是http还是https。

在负载均衡配置了证书后需要在web端配置http自动跳转https,java中我们是通过一个全局拦截器来拦截所有请求(详见下面代码),然后获取header中的X-Forwarded-Proto值,若此值为空或为http则将此请求转发到https请求(可以获取请求url然后修改http为https后做转发)

至于为什么不能用之前配置web.xml的方式来做是由于阿里云的负载均衡是将证书配置在前端,而后端请求到具体的服务器都是从80端口进入,所以后端服务器永远都是http协议,因此web.xml配置的方式会陷入死循环。

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 重定向拦截
return filterRedirect(request, response);
}

/**
* 判断请求若是http则跳转到https
*/
private boolean filterRedirect(HttpServletRequest request, HttpServletResponse response) throws IOException {
String scheme = request.getHeader("X-Forwarded-Proto")==null?request.getScheme():request.getHeader("X-Forwarded-Proto");
if(!scheme.equals("https")){
StringBuilder url = new StringBuilder();
url.append("https");
url.append(request.getRequestURL().substring(4));

String param = request.getQueryString();
if(StringUtils.isNotBlank(param)){
url.append("?").append(param);
}
response.sendRedirect(url.toString());
return false;
}

return true;
}

 

以上是关于如何申请https证书,搭建https网站的主要内容,如果未能解决你的问题,请参考以下文章

如何申请https证书,搭建https网站

如何申请https证书,搭建https网站

如何把http自动改成https

怎样将http网站转换为https

如何把一个web集群由HTTP转换为HTTPS

https网站的搭建