配合Tomcat生成SSL证书, 应用进行HTTS访问

一丶生成.keystore文件

1丶找到tomcat文件bin目录下, 输入cmd进入终端
2丶输入命令:

keytool -genkey -alias webgis -keyalg RSA -keypass gisplatform -storepass gisplatform -keysize 2048 -keystore webgis.keystore -validity 7300

在这里插入图片描述
**
注意事项:
(1)丶您的名字与姓氏填相对应的域名,比如本地就可以填: localhost,其它的可选填或跳过
(2)丶-keypass和–storepass的秘钥一致,省去输入密码的过程,密码默认为空
(3)丶-validity 指证书的有效期(天),缺省有效期很短,只有90天,这里配置了20年
**
3丶查看bin目录下是否有webgis.keystore文件
在这里插入图片描述

二丶生成服务端证书

根据上面导出的webgis.kyestore文件,就可以生成后缀为cer的文件,这是服务器端的证书文件,执行命令如下:

keytool -export -alias webgis -storepass gisplatform -file webgis.cer -keystore webgis.keystore

在这里插入图片描述

**
注意:
1丶还是在bin目录下
2丶-alias和-storepass必须为生成webgis.keystore密钥文件时所指定的别名和密码,否则证书导出失败。
**
成功之后多出一个文件:
在这里插入图片描述

三丶导入证书到cacerts密钥库文件中

keytool -import -trustcacerts -alias webgis -storepass gisplatform -file webgis.cer -keystore cacerts

如果有提示,输入Y即可。

成功之后多出一个文件:
在这里插入图片描述

四丶配置service.xml文件

需加文件内容信息:

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"

maxThreads="150" SSLEnabled="true" scheme="https"

             secure="true" clientAuth="false" sslProtocol="TLS"

             keystoreFile="D:\apache-tomcat-8.5.15\bin\webgis.keystore"

             keystorePass="gisplatform"

             truststoreFile="D:\apache-tomcat-8.5.15\bin\cacerts"/>

**
注意:
1丶https协议默认访问端口8443,可改成443,这样就跟80端口一样访问是不需要加上端口号
2丶若有其它配置需注释掉
3丶转发端口与https端口需对应
**
在这里插入图片描述
这些配置完,启动Tomcat可以进行Https协议请求

五丶删除证书的命令

列出信任证书库中所有已有证书:

keytool -list -v -keystore cacerts

删除库中某个证书:

keytool -delete -trustcacerts -alias webgis -storepass gisplatform –keystore cacerts

在C++中,HTTP和HTTPS协议的使用主要依赖于网络库的实现,如libcurl、Boost.Asio等。它们之间的区别主要体现在通信的安全性、握手过程、端口配置以及资源消耗等方面。 HTTP协议是以明文方式传输数据的应用层协议,而HTTPS则是在HTTP的基础上加入了SSL/TLS加密层,通过加密手段保护数据的传输过程[^1]。在C++开发中,使用HTTPS通常需要额外处理SSL/TLS握手阶段,包括证书验证、密钥交换等步骤。例如,使用Boost.Asio库时,开发者需要配置SSL上下文并处理加密连接的建立。 HTTPS的握手过程比HTTP复杂,客户端与服务器在TCP三次握手之后还需要进行SSL握手,协商加密算法和密钥。这一过程会增加通信延迟,影响页面加载速度,同时也会提高服务器的CPU资源消耗[^2]。此外,HTTPS协议需要服务器端申请并配置SSL证书,而客户端可能需要信任特定的根证书以完成连接。 在C++中实现HTTPS请求时,开发者需要注意以下几点: 1. 使用支持SSL/TLS的库(如libcurl、Boost.Asio、OpenSSL)。 2. 处理证书验证,包括服务器证书的合法性检查。 3. 配置SSL上下文参数,如加密套件、协议版本等。 4. 管理会话密钥和加密通信过程。 例如,使用libcurl在C++中发起HTTPS请求的基本代码如下: ```cpp #include <curl/curl.h> #include <iostream> int main() { CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); // 自动跟随重定向 curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); // 不验证SSL证书 curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); // 不验证主机名 res = curl_easy_perform(curl); if(res != CURLE_OK) std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl; curl_easy_cleanup(curl); } return 0; } ``` 上述代码中,`CURLOPT_SSL_VERIFYPEER` 和 `CURLOPT_SSL_VERIFYHOST` 选项被设置为忽略SSL证书验证,这在生产环境中不推荐使用,因为会降低安全性。 HTTPS相较于HTTP的优势在于数据传输的安全性,能够防止中间人攻击,同时通过证书机制验证服务器身份。然而,HTTPS的加密和解密过程会增加服务器的计算负担,特别是在高并发场景下。 在C++开发中,选择HTTP还是HTTPS取决于具体的应用场景。如果对数据安全性要求较高,如金融交易、用户登录等场景,应优先使用HTTPS;而对于内部服务或测试环境,HTTP可能更便于调试和部署。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值