最近开发了一款微信小程序,用的是Java后台。事先没研究过小程序的我做好直接发布了,成功之后傻眼了。出现了错误,我立刻在本地找错误,结果本地测试正常,本地代理服务器完全没有问题,访问到了服务器后台。
![微信小程序无法访问服务器后台](https://i-blog.csdnimg.cn/blog_migrate/fea3691a1d50a19dbee8cea2718b86c7.png)
经过查询,发现了问题所在,在腾讯开发的微信小程序中,小程序只可以跟指定的域名与进行网络通信。包括普通 HTTPS 请求、上传文件、下载文件和 WebSocket 通信。微信官方原文如下:
所以,咱们有必要为咱们的小程序来准备一下了:
- 配置好HTTPS证书的域名。
- 配置了jdk、tomcat的服务器。
- 已经写好的小程序。
首先咱们看看ssl证书是个什么、有什么作用、有哪几种类型:
SSL证书(Secure Socket Layer的缩写)是Netscape设计开发的,用于保护服务器和客户端之间的在线交易。通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。
1.它有什么作用?
服务器部署了 SSL 证书后,浏览器与服务器之间的传输通道由明文传输变成加密传输,传输信息受到高强度保护,可避免非法篡改和窃取。同时浏览器可核实服务器的真实身份,此真实身份是通过第三方权威机构 验证的。因此SSL证书具有两大作用:数据加密和身份认证。
鉴于目前各种间谍软件、窃听软件都为了非法获得用户的机密信息,如果服务器部署了 SSL 证书就可以减少黑客通过嗅探网络数据包的方式截取用户输入的数据,从而达到保护网站用户的合法权益。
2.SSL证书由谁颁发?
SSL证书由数字证书颁发机构(CA)颁发。CA机构承担公钥合法性检验的第三方权威机构,负责指定政策、步骤来验证用户的身份,并对SSL证书进行签名,确保证书持有者的身份和公钥的所有权。
为了确保SSL证书顺利安装到网站合法Web服务器,便于用户通过网络浏览器进行在线传输数据保护。CA机构根据所选择的SSL证书类型,对申请者进行不同级别的验证。
3.SSL证书的类型分别有哪些?
SSL证书根据验证方式进行分类,一般为三种类型:
域验证型(DV)SSL证书:只需要验证域名的所有权,特点是颁发速度快;
组织验证型(OV)SSL证书:指需要验证网站所有单位的真实身份的标准型SSL证书,不仅能起到网站机密信息加密的作用,而且能向用户证明网站的真实身份。
扩展验证型(EV)SSL证书:是全球领先的数字证书颁发机构和主流的浏览器开发商共同制定的一个新的SSL证书严格身份验证标准。
SSL证书的好处
对网站信息进行加密,确保浏览器和服务器之间的通信安全。
保护用户的隐私信息。
提高用户的信任和信心。
消除浏览器的警告和警报。
提高企业的信誉,有助于产生更大的收益。
提高组织在互联网上的口碑。
谷歌优先收录部署SSL证书的网站。
消除网络钓鱼的风险和其他网络攻击。
1.接下来给域名配置证书
证书的有免费的有需要购买的,如果你是自己测试用的话就去阿里云买免费的,公司的话建议购买上述中提到的更为安全的证书。
在输入域名,个人信息之后,证书就发放了。接下来第一步就需要进行DNS验证。
DNS验证
DNS验证:验证对申请证书的域名有DNS解析的权限,需要根据CA给出的DNS TXT记录,增加到域名的DNS解析中去,CA会验证这条TXT记录是否生效,一旦查到这条TXT记录,就会完成验证。
可以在域名的DNS服务商网站平台,添加这条TXT记录,以下以阿里云(万网)为例简要说明:
1.1:登陆阿里云域名管理后台,进入:产品管理-管理控制台-域名与网站(万网) - 云解析DNS 。
1.2:选择需要配置的域名,点击“解析设置”。
1.3:选择“添加解析”,记录类型选“TXT”:
1.4:根据上面的示例,在主机记录中输入:@(如果是二级域名验证,请填二级域名前缀,例:www. domain.com.cn,则填www)
1.5:在记录值中输入:qwertyuiop(此处只是例子演示,请根据CA实际提供的TXT值设定)
1.6:TTL设置最小值为10分钟~1小时,然后点击【确认】按钮保存。
1.7:DNS记录设置完成
2.Tomcat服务器安装SSL证书
您可以将下载的证书安装到Tomcat服务器上。Tomcat支持PFX格式和JKS两种格式的证书,您可根据选您Tomcat的版本择其中一种格式的证书安装到Tomcat上。
一般是fpx格式的,申请证书时需要选择 系统自动创建CSR。申请证书时如果选择手动创建CSR,则不会生成证书文件。您需要选择其他服务器下载.crt文件后,使用openssl命令将.crt文件的证书转换成.pfx格式。如过你要安装jsk格式的。用这个方法将fpx转换为jsk;
<!--使用JWSDP工具包中的工具
- 安装J2SE 1.5,下载并运行jdk-1_5_0_09-windows-i586-p.exe
- 下载并安装jave web service develop pack, jwsdp-2_0-windows-i586.exe
- 创建一个新的keystore文件,里面的别名取做TEMP
keytool -genkey -alias temp -keyalg RSA -keystore server.jks - 准备好要导入的PFX文件,server.pfx,运行:
C:\Sun\jwsdp-2.0\xws-security\bin\pkcs12import.bat pkcs12import -file server.p12 -alias server -keystore server.jks - 查看server.jks 里面的证书记录:
keytool -list -v -keystore server.jks-->
打开Tomcat > conf > server.xml文件,在server.xml文件中添加以下属性(其中port属性请根据您的实际情况修改):
<Connector port="8443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="domain name.pfx" #此处keystoreFile代表证书文件的路径,请用您证书的文件名替换domain name。
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"/>
如果是jds.下面的步骤可能适合你理解:
默认情况下<Connector port=”8443″……/>是被注释的,配置时需把“<!– –>”去掉,然后对其节点进行相应的修改,需区分tomcat版本来修改。
1) Tomcat 5/6版本:(由于该版本漏洞较多,建议立即升级到tomcat7或更高版本)
2)Tomcat 7/8版本(JDK建议使用1.7_45或以上版本最佳)
<Connector port="443" protocol="HTTP/1.1"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="keystore/www.youdomain.com.jks" keystorePass="证书密码"
clientAuth="false" sslProtocols = "TLS"/>
3) Tomcat8.5/9版本:
<Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="150" SSLEnabled="true" >
<SSLHostConfig >
<Certificate certificateKeystoreFile="conf/www.yourdomain.com.jks" certificateKeystorePassword="密码" type="RSA" />
</SSLHostConfig>
</Connector>
最后保存该配置文件,然后重启Tomcat后再次访问即可。
3.小程序访问后台测试
小程序的url这样写,那么我们就愉快的完成我们的ssl证书了,不光是小程序,其他地方也会遇到ssl证书的安装。
谢谢大家阅读,欢迎留言!
特别鸣谢
https://certmall.trustauth.cn/Free
技术指导
tomcat安装SSL教程