• 关于

    https请求和ssl证书

    的搜索结果

问题

HTTPS如何操作?

轩墨 2019-12-01 21:07:19 1198 浏览量 回答数 0

回答

HttpClient HTTPS使用方法 :http://blog.itpub.net/81227/viewspace-694108/######回复 @安谧 : 有条件,比如百度就有http和https的,两个都可以访问。那么你http请求就可以请求到https同样的数据。如果他只开放https,那么你http请求就会得不到数据,会被http跳转到https页面。######回复 @沐凨 : 我的意思是我想去模拟http post请求去访问一个网站,但是这个网站是https的,我没有加ssl能获取到数据嘛######回复 @安谧 : “HttpClient提供了对SSL的支持,在使用SSL之前必须安装JSSE。” 我晕,,,你不看内容怎么知道?######我就是想问http请求能不能获得到https请求的数据######http和https直接,说白了就多了一个ssl加密,传输的数据由明文变为密文,只要证书秘钥认证都OK,请求自然是可以的。######那我模拟http的post请求,没有ssl加密,能拿到数据嘛######可以 ######而站点同时提供http和https,容易引来中间人攻击,就是你的https请求被中间人获取,中间人转而请求网站http,你认为https连接是安全的,但是这只是中间人伪造的假象。###### https: tcp先连接,完了ssl握手数据,完了http在ssl数据包里 http: tcp先连接,完了http在tcp数据包里 所以你的http请求访问https站是拿不回数据的,中间少了握手,连接就直接卡掉了,根本走不到拿数据那一步 ###### java原生HttpsURLConnection######HttpUtil, 定义 doPost  

爱吃鱼的程序员 2020-06-05 13:12:49 0 浏览量 回答数 0

回答

微信9月21日晚宣布“微信小程序开始内测”,并于11月3日宣布开始公测,官方需求文档要求后台使用HTTPS请求进行网络通信。   什么是微信小程序?   小程序是一种不需要下载安装即可使用的应用,即搜即用,用完就走,用户不用关心是否安装太多应用的问题,无需安装卸载。这是一个全新的生态,开发者可以快速地开发一个小程序,在微信内被便捷地获取和传播。   微信小程序要求HTTPS请求   为了保护小程序应用安全,微信官方的需求文档要求,每个微信小程序必须事先设置一个通讯域名,并通过HTTPS请求进行网络通信,不满足条件的域名和协议无法请求。因此开发者应先准备好配置好HTTPS证书的域名,还没有配置HTTPS要赶紧升级。   SSL证书的选择   域名要实现HTTPS加密请求,需要安装SSL证书。SSL证书的种类那么多,怎么选择适合自己网站的SSL证书?   1)SSL证书类型   DV SSL证书(域名验证型):只验证域名所有权,适合个人网站、博客等站点使用;   IV SSL证书(个人验证型):验证网站所属个人身份,适合自媒体、个人品牌站点使用;   OV SSL证书(企业验证型):验证网站所属单位身份,适合企业级用户使用;   EV SSL证书(扩展验证型):扩展验证网站所属单位身份,适合高度信任的企业级用户使用。   2)支持的域名类型和加密强度   哪些领域适合接入微信小程序   小程序一经推出,立刻引发业界热议,各种Demo、指南一夜之间霸屏,但并不是所有服务都适合小程序。其中,使用频次较低但却比较重要的服务,就非常适合加入微信小程序的申请队伍,比如:教育、医疗、家政、求职招聘、二手买卖、旅游、票务等,用户一年用个一两次之后就再也想不起来的,通过微信小程序解决要比引导用户通过原生方式下载更高效便捷。   另外,初创型企业和个人开发者也可以通过小程序来试探MVP产品,微信拥有天然的传播能力和获客能力,而原生应用除了开发比较复杂外,推广成本极高,获客成本极高,这些都阻碍了产品的探索和快速试错。

python小菜菜 2020-06-19 14:37:32 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

生成证书可以通过以下步骤生成一个简单的证书:首先,进入你想创建证书和私钥的目录,例如: $ cd /usr/local/nginx/conf创建服务器私钥,命令会让你输入一个口令: $ openssl genrsa -des3 -out server.key 1024创建签名请求的证书(CSR): $ openssl req -new -key server.key -out server.csr在加载SSL支持的Nginx并使用上述私钥时除去必须的口令: $ cp server.key server.key.org$ openssl rsa -in server.key.org -out server.key启用一个 SSL 虚拟主机在nginx.conf配置文件中编写: server { listen 443; server_name example.com; root /apps/www; index index.html index.htm; ssl on; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; }其中 ssl_certificate 表示 CA 文件,ssl_certificate_key 表示密钥文件。如果想把 http 请求强制转到 https,可以这样: server {listen 80;server_name example.me; return 301 https://$server_name$request_uri;}

我的中国 2019-12-02 01:33:28 0 浏览量 回答数 0

回答

首先,您需要申请一张SSL证书,然后将SSL证书,将证书绑定到网关(查看分组明细-找到相应域名-上传证书)。 其次,将您的API请求协议修改为:HTTPS或者HTTP和HTTPS。

保持可爱mmm 2020-03-26 21:23:25 0 浏览量 回答数 0

问题

[求助!] RestTemplate 请求https接口报错的问题, 查无所获, ?报错

爱吃鱼的程序员 2020-06-23 14:15:55 0 浏览量 回答数 1

回答

apache配置SSL证书请参考:http://www.wosign.com/support/ssl-Apache2.htm 一、安装SSL证书环境 1.1 SSl 证书安装环境简介 Centos 6.4 操作系统; Apache2.2.或以上版本; Openssl 1.0.1+; SSL 证书一张(备注:本指南使用 s.wosign.com 域名OV SSL 证书进行操作,通用其它版本证书) 1.2 网络环境要求 请确保站点是一个合法的外网可以访问的域名地址,可以正常通过或 http://XXX 进行正常访问。 二、生成证书请求文件 2.1 生成请求文件csr 首先下载openssl 软件,可以去openssl 官网下载:http://www.openssl.org/source/ 下载后安装到本地计算机。 2.1.1 查看openssl 在终端输入openssl version 查看openssl当前版本。 图 1 2.1.2 生成key私钥文件 使用以下命令来生成私钥:openssl genrsa -des3 -out www.mydomain.com.key 2048,生成的私钥保存在当期目录。 图 2 2.1.3 生成csr 文件 使用以下命令来生成私钥:openssl req -new -key www.mydomain.com.key -out www.mydomain.com.csr 图 3 Country Name (2 letter code) [GB]: 输入国家地区代码,如中国的 CN State or Province Name (full name) [Berkshire]: 地区省份 Locality Name (eg, city) [Newbury]: 城市名称 Organization Name (eg, company) [My Company Ltd]: 公司名称 Organizational Unit Name (eg, section) []: 部门名称 Common Name (eg, your name or your server’s hostname) []: 申请证书域名 Email Address []: 电子邮箱 随后可能会提示输入密码,一般无需输入,直接回车即可 三、 提交CSR 文件 3.1 登录wosign站点 登录https://login.wosign.com/;输入密码和验证码,选择客户端证书登录在线购买系统。 3.2 选择证书类型 点右上边橙色“申请证书”连接,选择您要申请的 SSL 证书,点“立即申请”,如下图所示: 3.3 填写资料 需要填写:证书绑定的域名,申请年限,是否需要发票,证书签名算法,并设置证书安装密码。 3.4 验证域名邮箱 进入域名验证,可以选择whois 邮箱验证,或者网站验证方式,如下图所示,也可以先跳过验证,进入下一步,再验证域名。 3.5 确认订单信息 选择证书申请文件生成方式二,提交生成的 csr 文件,如下图所示,然后确认订单信息。 3.6 支付订单 可您以在线转账,也可以选择线下转账。 3.7 上传证明材料 (SSL 用户授权书),如下图所示: 3.8 等待证书签发 证书申请提交成功。待客服和鉴证审核,您可以联系您的客服专员咨询订单审核情况。 四、安装SSL证书 4.1 获取SSL 证书 成功在沃通CA申请SSL证书后,会得到一个有密码的压缩包文件,输入证书密码后解压得到五个文件: for Apache、for IIS、for Ngnix、for Tomcat、for Other Server,这个是证书的几种格式,Apache 上需要用到for Apache格式的证书。 图 1 4.2 解压证书文件 解压Apache 文件可以看到3 个文件。包括公钥、私钥、证书链,如图2: 图 2 4.3 安装SSL证书 1、打开apache 安装目录下 conf 目录中的httpd.conf 文件,找到: #LoadModule ssl_module modules/mod_ssl.so (如果找不到请确认是否编译过 openssl 插件) #Include conf/extra/httpd_ssl.conf 删除行首的配置语句注释符号“#”,保存退出。 2、打开apache 安装目录下 conf/extra 目录中的httpd-ssl.conf 文件 注释: yum 安装配置目录:conf.d/ssl.conf ubuntu/apache2 安装目录:conf/sites-enabled/.conf 在配置文件中查找以下配置语句: a. 添加SSL 协议支持语句,关闭不安全的协议和加密套件: SSLProtocol all -SSLv2 -SSLv3 b.修改加密套件如下: SSLCipherSuite AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL; c.将服务器证书公钥配置到该路径下(在conf 目录下创建ssl 目录,将 for Apache 里面的三 个证书文件拷贝到 ssl 目录下) SSLCertificateFile conf/ssl/test.wosign.com.crt (证书公钥) d.将服务器证书私钥配置到该路径下 SSLCertificateKeyFile conf/ssl/test.wosign.com.key (证书私钥) e.将服务器证书链配置到该路径下 #SSLCertificateChainFile conf/ssl/1_root_bundle.crt(证书链)删除行首的“#”号注释符 保存退出,并重启Apache。 3、进入Apache 安装目录下的bin 目录,运行如下命令 ./apachectl -k stop ./apachectl -k start 4.4 测试SSL 证书 在浏览器地址栏输入:https://s.wosign.com (申请证书的域名)测试您的 SSL 证书是否安装成功,如果成功,则浏览器地址栏后方会显示一个安全锁标志。 备注:安装完ssl 证书后部分服务器可能会有以下错误,请按照链接修复 a. 加密协议和安全套件:https://bbs.wosign.com/thread-1284-1-1.html b. 部署https页面后出现排版错误或提示网页有不安全因素,可参考以下链接: https://bbs.wosign.com/thread-1667-1-1.html 五、安装安全签章 (目前该安全签章只支持 OV 级以上证书使用) 5.1 安装中文签章 (注意:签章的显示需要外网环境,且 https 使用 443 端口) 您购买了 WoSign SSL 证书后,将免费获得一个能直观地显示贵网站的认证信息的可信网站安全认证标识,能大大增强用户的在线信任,促成更多在线交易。所以,建议您在安装成功 SSL 证书后马上在网站的首页和其他页面中添加如下代码动态显示可信网站安全认证标识: <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="https://seal.wosign.com/tws.js"></SCRIPT> 5.2 安装英文签章 如果您希望在英文页面显示认证标识,则在英文页面添加如下代码: <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="https://seal.wosign.com/tws-en.js"></SCRIPT> 详细请访问:https://www.wosign.com/support/siteseal.htm 六、SSL证书的备份 请保存好收到的证书压缩包文件及密码,以防丢失。 答案来源于网络

养狐狸的猫 2019-12-02 02:14:56 0 浏览量 回答数 0

回答

您可以通过发送HTTP GET请求调用SSL证书API,并按照接口说明在请求中加入相应的请求参数。调用接口后系统会返回处理结果。请求和返回结果都使用UTF-8字符集进行编码。 请求结构 SSL证书系统的API是RPC风格,您可以通过发送HTTP GET请求调用SSL证书的API。 其请求结构如下。 https://Endpoint/?Action=xx&Parameters 其中: Endpoint:SSL证书API的服务接入地址为cas.aliyuncs.com。 Action:要执行的操作,如使用DescribeOrderList查询单个证书订单的详情。 Version:要使用的API版本,SSL证书的API版本是2018-08-13。 Parameters:请求参数,每个参数之间用“&”分隔。 请求参数由公共请求参数和API自定义参数组成。公共参数中包含API版本号、身份验证等信息,详细内容参见公共参数。 下面是一个调用DescribeOrderList接口查询单个证书订单详情的示例。 说明 为了便于用户查看,本文档中的示例都做了格式化处理。 http(s)://cas.aliyuncs.com/?Action=DescribeOrderList &Format=xml &Version=2018-08-13 &Signature=xxxx%xxxx%3D &SignatureMethod=HMAC-SHA1 &SignatureNonce=15215528852396 &SignatureVersion=1.0 &AccessKeyId=key-test &TimeStamp=2012-06-01T12:00:00Z ... API签名 SSL证书服务会对每个API请求进行身份验证,无论使用HTTP还是HTTPS协议提交请求,都需要在请求中包含签名(Signature)信息。 SSL证书通过使用AccessKey ID和AccessKey Secret进行对称加密的方法来验证请求的发送者身份。AccessKey是为阿里云账号和RAM用户发布的一种身份凭证(类似于用户的登录密码),其中AccessKey ID 用于标识访问者的身份,AccessKey Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密。 RPC API需按以下格式在请求中增加签名(Signature)。 https://endpoint/?SignatureVersion=1.0&SignatureMethod=HMAC-SHA1&Signature=CT9X0VtwR86fNWSnsc6v8YGOjuE%3D&SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf 以DescribeOrderList为例,假设AccessKey ID是testid, AccessKey Secret是testsecret,则签名前的请求URL如下。 https://cas.aliyuncs.com/?Action=DescribeOrderList &TimeStamp=2016-02-23T12:46:24Z &Format=XML &AccessKeyId=testid &SignatureMethod=HMAC-SHA1 &SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf &Version=2018-08-13 &SignatureVersion=1.0 完成以下步骤计算签名。 使用请求参数创建待签名字符串。 GET&%2F&AccessKeyId%3Dtestid&Action%3DDescribeOrderList&Format%3DXML&SignatureMethod%3DHMAC-SHA1&SignatureNonce%3D3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf&SignatureVersion%3D1.0&TimeStamp%3D2016-02-23T12%253A46%253A24Z&Version%3D2018-12-03 计算待签名的HMAC的值。 在AccessKey Secret后添加一个“&”作为计算HMAC值的key。本示例中的key为testsecret&。 CT9X0VtwR86fNWSnsc6v8YGOjuE= 将签名加到请求参数中。 https://cas.aliyuncs.com/?Action=DescribeOrderList &TimeStamp=2016-02-23T12:46:24Z &Format=XML &AccessKeyId=testid &SignatureMethod=HMAC-SHA1 &SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf &Version=2018-08-13 &SignatureVersion=1.0 &Signature=CT9X0VtwR86fNWSnsc6v8YGOjuE%3D 说明 阿里云提供了多种语言的SDK及第三方SDK,可以免去您对签名算法进行编码的麻烦。更多阿里云SDK信息请参见阿里云开发工具包(SDK)。

保持可爱mmm 2020-03-27 18:56:35 0 浏览量 回答数 0

回答

您可以通过发送HTTP GET请求调用SSL证书API,并按照接口说明在请求中加入相应的请求参数。调用接口后系统会返回处理结果。请求和返回结果都使用UTF-8字符集进行编码。 请求结构 SSL证书系统的API是PRC风格,您可以通过发送HTTP GET请求调用SSL证书的API。 其请求结构如下: https://Endpoint/?Action=xx&Parameters 其中: Endpoint:SSL证书API的服务接入地址为cas.aliyuncs.com。 Action:要执行的操作,如使用DescribeUserCertificateList查询所有证书信息。 Version:要使用的API版本,SSL证书的API版本是2018-07-13。 Parameters:请求参数,每个参数之间用“&”分隔。 请求参数由公共请求参数和API自定义参数组成。公共参数中包含API版本号、身份验证等信息,详细内容参见公共参数。 下面是一个调用DescribeUserCertificateList接口查询所有证书信息的示例: 说明 为了便于用户查看,本文档中的示例都做了格式化处理。 http(s)://cas.aliyuncs.com/?Action=DescribeUserCertificateList &Format=xml &Version=2018-07-13 &Signature=xxxx%xxxx%3D &SignatureMethod=HMAC-SHA1 &SignatureNonce=15215528852396 &SignatureVersion=1.0 &AccessKeyId=key-test &TimeStamp=2012-06-01T12:00:00Z ... API签名 SSL证书服务会对每个API请求进行身份验证,无论使用HTTP还是HTTPS协议提交请求,都需要在请求中包含签名(Signature)信息。 SSL证书通过使用AccessKey ID和AccessKey Secret进行对称加密的方法来验证请求的发送者身份。AccessKey是为阿里云账号和RAM用户发布的一种身份凭证(类似于用户的登录密码),其中AccessKey ID用于标识访问者的身份,AccessKey Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密。 RPC API需按如下格式在请求中增加签名(Signature): https://endpoint/?SignatureVersion=1.0&SignatureMethod=HMAC-SHA1&Signature=CT9X0VtwR86fNWSnsc6v8YGOjuE%3D&SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf 以DescribeUserCertificateList为例,假设AccessKey ID是testid, AccessKey Secret是testsecret,则签名前的请求URL如下: https://cas.aliyuncs.com/?Action=DescribeUserCertificateList &TimeStamp=2016-02-23T12:46:24Z &Format=XML &AccessKeyId=testid &SignatureMethod=HMAC-SHA1 &SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf &Version=2018-07-13 &SignatureVersion=1.0 完成以下步骤计算签名: 使用请求参数创建待签名字符串: GET&%2F&AccessKeyId%3Dtestid&Action%3DDescribeUserCertificateList&Format%3DXML&SignatureMethod%3DHMAC-SHA1&SignatureNonce%3D3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf&SignatureVersion%3D1.0&TimeStamp%3D2016-02-23T12%253A46%253A24Z&Version%3D2018-12-03 计算待签名的HMAC的值。 在AccessKey Secret后添加一个“&”作为计算HMAC值的key。本示例中的key为testsecret&。 CT9X0VtwR86fNWSnsc6v8YGOjuE= 将签名加到请求参数中: https://cas.aliyuncs.com/?Action=DescribeUserCertificateList &TimeStamp=2016-02-23T12:46:24Z &Format=XML &AccessKeyId=testid &SignatureMethod=HMAC-SHA1 &SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf &Version=2018-07-13 &SignatureVersion=1.0 &Signature=CT9X0VtwR86fNWSnsc6v8YGOjuE%3D 说明 阿里云提供了多种语言的SDK及第三方SDK,可以免去您对签名算法进行编码的麻烦。更多阿里云SDK信息请参见阿里云开发工具包(SDK)。

保持可爱mmm 2020-03-27 18:54:28 0 浏览量 回答数 0

回答

此处延伸:https的实现原理 1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 https实现原理: (1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。 (2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。 (3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。 (4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。 (5)Web服务器利用自己的私钥解密出会话密钥。 (6)Web服务器利用会话密钥加密与客户端之间的通信。

剑曼红尘 2020-04-10 12:56:06 0 浏览量 回答数 0

问题

Tomcat配置Https后使用post提交并未对header加密,如何解决?

落地花开啦 2019-12-01 19:40:39 1455 浏览量 回答数 1

回答

如果闲麻烦,直接淘宝Gworg 帮你处理。 web service在企业应用中常常被用作不同系统之间的接口方式。但是如果没有任何安全机制的话,显然是难以委以重任的。比较直接的web service加密方式就是使用HTTPS方式(SSL证书加密)加密连接,并且只允许持有信任证书的客户端连接,即SSL双向认证。这样就保证了连接来源的可信度以及数据在传输过程中没有被窃取或篡改。通过HTTPS加密方式访问web service具体方法如下: 【准备工作】 (1)检查JDK的环境变量是否正确。本文使用JDK 1.6 (2)准备web服务器,这里选用TOMCAT 6.0 (3)准备web service服务端和客户端。 【生成证书】 这里用到的文件,这里存放在D:/SSL/文件夹内,其中D:/SSL/server/内的文件是要交给服务器用的,D:/SSL/client/内的文件是要交给客户端用的。 1生成服务端证书 开始-运行-CMD-在dos窗口执行下执行命令: keytool -genkey -v -aliastomcat -keyalg RSA -keystore D:/SSL/server/tomcat.keystore -dname"CN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN" -validity 3650-storepass zljzlj -keypass zljzlj 说明: keytool 是JDK提供的证书生成工具,所有参数的用法参见keytool –help -genkey 创建新证书 -v 详细信息 -alias tomcat 以”tomcat”作为该证书的别名。这里可以根据需要修改 -keyalg RSA 指定算法 -keystoreD:/SSL/server/tomcat.keystore 保存路径及文件名 -dname"CN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN" 证书发行者身份,这里的CN要与发布后的访问域名一致。但由于这里是自签证书,如果在浏览器访问,仍然会有警告提示。真正场景中建议申请CA机构(wosign)签发的SSL证书更安全。 -validity 3650证书有效期,单位为天 -storepass zljzlj 证书的存取密码 -keypass zljzlj 证书的私钥 2 生成客户端证书 执行命令: keytool ‐genkey ‐v ‐aliasclient ‐keyalg RSA ‐storetype PKCS12 ‐keystore D:/SSL/client/client.p12 ‐dname"CN=client,OU=zlj,O=zlj,L=bj,ST=bj,C=CN" ‐validity 3650 ‐storepassclient ‐keypass client 说明: 参数说明同上。这里的-dname 证书发行者身份可以和前面不同,到目前为止,这2个证书可以没有任何关系。下面要做的工作才是建立2者之间的信任关系。 3 导出客户端证书 执行命令: keytool ‐export ‐aliasclient ‐keystore D:/SSL/client/client.p12 ‐storetype PKCS12 ‐storepass client‐rfc ‐file D:/SSL/client/client.cer 说明: -export 执行导出 -file 导出文件的文件路径 4 把客户端证书加入服务端证书信任列表 执行命令: keytool ‐import ‐aliasclient ‐v ‐file D:/SSL/client/client.cer ‐keystoreD:/SSL/server/tomcat.keystore ‐storepass zljzl 说明: 参数说明同前。这里提供的密码是服务端证书的存取密码。 5 导出服务端证书 执行命令: keytool -export -aliastomcat -keystore D:/SSL/server/tomcat.keystore -storepass zljzlj -rfc -fileD:/SSL/server/tomcat.cer 说明: 把服务端证书导出。这里提供的密码也是服务端证书的密码。 6 生成客户端信任列表 执行命令: keytool -import -fileD:/SSL/server/tomcat.cer -storepass zljzlj -keystoreD:/SSL/client/client.truststore -alias tomcat –noprompt 说明: 让客户端信任服务端证书 【 配置服务端为只允许HTTPS连接】 1 配置Tomcat 目录下的/conf/server.xml Xml代码: <Connectorport="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true"clientAuth="true" sslProtocol="TLS"keystoreFile="D:/SSL/server/tomcat.keystore" keystorePass="zljzlj"truststoreFile="D:/SSL/server/tomcat.keystore" truststorePass="zljzlj" /> 说明: 在server.xml里面这段内容本来是被注释掉的,如果想使用https的默认端口443,请修改这里的port参数。其中的clientAuth="true" 指定了双向证书认证。 2 配置服务端项目web.xml 在<welcome-file-list>之后增加Xml代码: <!-- 强制SSL配置,即普通的请求也会重定向为SSL请求 --> <security-constraint> <web-resource-collection> <web-resource-name>SSL</web-resource-name> <url-pattern>/service/*</url-pattern><!--全站使用SSL <url-pattern>/*</url-pattern>--> </web-resource-collection> <user-data-constraint> <description>SSL required</description> <!-- CONFIDENTIAL: 要保证服务器和客户端之间传输的数据不能够被修改,且不能被第三方查看到 --> <!-- INTEGRAL: 要保证服务器和client之间传输的数据不能够被修改 --> <!-- NONE: 指示容器必须能够在任一的连接上提供数据。(即用HTTP或HTTPS,由客户端来决定)--> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> 说明: 这里限制了WEB service服务地址的访问必须为https连接。<url-pattern>要根据你的web service服务地址配置。 【修改客户端代码】 在执行访问之前,增加Java代码: System.setProperty("javax.net.ssl.trustStore","D:/SSL/client/client.truststore"); System.setProperty("javax.net.ssl.trustStorePassword","zljzlj"); System.setProperty("javax.net.ssl.keyStoreType","PKCS12"); System.setProperty("javax.net.ssl.keyStore","D:/SSL/client/client.p12"); System.setProperty("javax.net.ssl.keyStorePassword","client"); StringendPoint=" https://127.0.0.1:8443/easbCut/services/ApplyFormService"; ... 通过设置参数来指定客户端连接时所使用的客户端证书,这里还可以采用修改JVM启动参数的的方式来执行,但出于不影响其他功能的考虑,这里采用System.setProperty的方式来设置这些参数,在使用结束后,可以还原这些参数配置。做为客户端的开发者,可以把拿到的证书文件后,只执行步骤3。 答案来源网络,供您参考

问问小秘 2019-12-02 02:13:05 0 浏览量 回答数 0

问题

负载均衡配置证书

1811418142077216 2019-12-01 18:57:48 198 浏览量 回答数 1

回答

要解决这个问题首先资源主机要支持HTTPS,然后如果网站既支持http又支持https请求那么资源文件的请求路径可以写为//www.domain.com/public/style.css。 ######回复 @汪小佰 : 跟前端沟通了 他们支持下######回复 @低调的浮躁 : 看目标主机支不支持HTTPS,不支持的话我建议将目标主机的资源文件下载到你的项目当中去加载。######现在是本域名下的js css文件加了https,请求的其他域名下的js css还是http请求,这个应该怎么处理######坐等楼主答案,最近也会有这个需求######前端资源支持下就可以了######如果你需要把静态资源和动态资源分开,那么就必须把静态资源也加上https 不然像火狐就会显示灰色三角,谷歌会显示黄色三角,如果你的增强型证书,那么增强型绿色地址栏就完全没有效果了,你可以购买一张最便宜的域名型 SSL证书安装到你的静态资源服务器上。 ###### 请问楼主怎么解决的

爱吃鱼的程序员 2020-06-03 20:54:41 0 浏览量 回答数 0

回答

为此需要启用SSL。Telegram正在尝试与服务器启动一个SSL会话,但你没有启用SSL,所以你看到了错误的请求。 ssl_context='adhoc'可能适用于测试应用程序,但我也有一个预感,telegram需要一个有效的SSL证书,而不仅仅是一个adhoc(或自签名证书)。请注意视频中URL左侧的锁以及缺少安全警告,该警告将与无效或自签名证书一起出现。 要确保SSL工作正常,请将ssl_context设置为adhoc,启动应用程序,并浏览到https://myprivatedomain.com:8443/index。如果您能浏览到它,那么Telegram也能浏览到它,当然是在获得有效证书之后。 接下来,要获得有效(且免费)的SSL证书,可以使用LetsEncrypt。 一旦您拥有了有效的SSL证书和密钥文件,您就可以将ssl_context参数传递给app.run,其中包含证书文件路径的元组和密钥文件的路径(“/path/to/fullchain”)。pem”、“路径/ / privkey.pem”) 完整运行的函数应该是这样的 app.run(debug=True, host='0.0.0.0', port=8443, ssl_context=("/path/to/fullchain.pem", "/path/to/privkey.pem")) 或者,您可以使用Apache或Nginx来使用SSL保护您的站点,并反向代理到您的bot。这些选项通常会在最终产品中使用,所以我理解,如果您现在不想使用它们,但这是一个很好的实践。 希望有帮助。

kun坤 2019-12-27 10:09:46 0 浏览量 回答数 0

回答

前提条件 您的Apache服务器上已经开启了443端口(HTTPS服务的默认端口)。 您的Apache服务器上已安装了mode_ssl.so模块(启用SSL功能)。 本文档证书名称以domain name为示例,例如:证书文件名称为domain name_public.crt,证书链文件名称为domain name_chain.crt,证书密钥文件名称为domain name.key。 申请证书时如果未选择系统自动创建CSR,证书下载压缩包中将不包含.key文件。 说明 .crt扩展名的证书文件采用Base64-encoded的PEM格式文本文件,可根据需要修改成.pem等扩展名。 证书格式详细内容,请参见主流数字证书都有哪些格式? 操作步骤 解压已下载保存到本地的Apache证书文件。 解压后的文件夹中有3个文件:证书文件 证书文件:以.crt为后缀或文件类型。 证书链文件:以.crt为后缀或文件类型。 密钥文件:以.key为后缀或文件类型。 在Apache安装目录中新建cert目录,并将解压的Apache证书、证书链文件和密钥文件拷贝到cert目录中。如果需要安装多个证书,需在Apache目录中新建对应数量的cert目录,用于存放不同的证书 。 说明 如果申请证书时选择了手动创建CSR文件,请将手动生成创建的密钥文件拷贝到cert目录中并命名为domain name.key。 修改httpd.conf配置文件。 在Apache安装目录下,打开Apache/conf/httpd.conf文件,并找到以下参数,按照下文中注释内容进行配置。 #LoadModule ssl_module modules/mod_ssl.so #删除行首的配置语句注释符号“#”加载mod_ssl.so模块启用SSL服务,Apache默认是不启用该模块的。 #Include conf/extra/httpd-ssl.conf #删除行首的配置语句注释符号“#”。 说明 如果您在httpd.conf文件中没有找到以上配置语句,请确认您的Apache服务器中是否已经安装mod_ssl.so模块。可执行yum install -y mod_ssl命令安装mode_ssl模块。 保存httpd.conf文件并退出。 4\修改httpd-ssl.conf配置文件。 打开Apache/conf/extra/httpd-ssl.conf文件并找到以下参数,按照下文中注释内容进行配置。 说明 根据操作系统的不同,http-ssl.conf文件也可能存放在conf.d/ssl.conf目录中。 <VirtualHost *:443> ServerName #修改为申请证书时绑定的域名www.YourDomainName1.com。 DocumentRoot /data/www/hbappserver/public SSLEngine on SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。 SSLHonorCipherOrder on SSLCertificateFile cert/domain name1_public.crt # 将domain name1_public.crt替换成您证书文件名。 SSLCertificateKeyFile cert/domain name1.key # 将domain name1.key替换成您证书的密钥文件名。 SSLCertificateChainFile cert/domain name1_chain.crt # 将domain name1_chain.crt替换成您证书的密钥文件名;证书链开头如果有#字符,请删除。 </VirtualHost> #如果证书包含多个域名,复制以上参数,并将ServerName替换成第二个域名。 <VirtualHost *:443> ServerName #修改为申请证书时绑定的第二个域名www.YourDomainName2.com。 DocumentRoot /data/www/hbappserver/public SSLEngine on SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。 SSLHonorCipherOrder on SSLCertificateFile cert/domain name2_public.crt # 将domain name2替换成您申请证书时的第二个域名。 SSLCertificateKeyFile cert/domain name2.key # 将domain name2替换成您申请证书时的第二个域名。 SSLCertificateChainFile cert/domain name2_chain.crt # 将domain name2替换成您申请证书时的第二个域名;证书链开头如果有#字符,请删除。 </VirtualHost> 说明 需注意您的浏览器版本是否支持SNI功能。如果不支持,多域名证书配置将无法生效。 保存httpd-ssl.conf文件并退出。 5、重启Apache服务器使SSL配置生效。 在Apache的bin目录下执行以下命令: 停止Apache服务。 apachectl -k stop 2、开启Apache服务。 apachectl -k start 6、可选:修改httpd.conf文件,设置HTTP请求自动跳转HTTPS。 在httpd.conf文件中的<VirtualHost *:80> 中间,添加以下重定向代码。 RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]

问问小秘 2020-07-21 16:25:54 0 浏览量 回答数 0

问题

或许是Nginx下SPDY配置最实际的教程

妙正灰 2019-12-01 20:54:21 10030 浏览量 回答数 3

回答

引用楼主zjyjason于2015-05-18 15:41发表的 SLB如何配置https : 环境是一个slb,后面一个或者两个ecs。tomcat7。 之前在一个ecs就是一个单独公开的服务,在这个上面部署过https和证书,是完全正常,但是上了slb以后,https就配置不成功。 我要实现 的是slb配置https,而且如果输入http也可以正常访问,而且不是全站https,只是对部分页面和路径进行https。 ....... SLB提供https卸载服务, 后端走普通的http,所以后端配置不能配置为ssl相关的配置。我们目前没有针对性的将某些https又转回http,用户需要在请求到达后端ecs后, 自行forward。 比如永久302到http等, 这个要用户自行配置了。。。

我是李泉 2019-12-02 02:18:59 0 浏览量 回答数 0

问题

如何绑定自定义域名?

轩墨 2019-12-01 21:07:46 1209 浏览量 回答数 0

回答

Re如何用IIS建立高安全性Web服务器 5.IP地址的控制   IIS可以设置允许或拒绝从特定IP发来的服务请求,有选择地允许特定节点的用户访问服务,你可以通过设置来阻止除指定IP地址外的整个网络用户来访问你的Web服务器。具体设置:   (1) 启动ISM(Internet服务器管理器);   (2) 启动Web属性页中“高级”选项卡;   (3) 进行指定IP地址的控制设置。   6.端口安全性的实现   对于IIS服务,无论是WWW站点、FTP站点,还是NNTP、SMTP服务等都有各自监听和接收浏览器请求的TCP端口号(Post),一般常用的端口号为:WWW是80,FTP是21,SMTP是25,你可以通过修改端口号来提高IIS服务器的安全性。如果你修改了端口设置,只有知道端口号的用户才可以访问,但用户在访问时需要指定新端口号。   7.IP转发的安全性   IIS服务可提供IP数据包转发功能,此时,充当路由器角色的IIS服务器将会把从Internet接口收到的IP数据包转发到内部网中,禁用这一功能不失为提高安全性的好办法。具体设置如下:   (1) 启动“网络属性”并选择“协议”选项卡;   (2) 在TCP/IP属性中去掉“路由选择”。   8.SSL安全机制   IIS的身份认证除了匿名访问、基本验证和Windows NT请求/响应方式外,还有一种安全性更高的认证:通过SSL(Security Socket Layer)安全机制使用数字证书。   SSL(加密套接字协议层)位于HTTP层和TCP层之间,建立用户与服务器之间的加密通信,确保所传递信息的安全性。SSL是工作在公共密钥和私人密钥基础上的,任何用户都可以获得公共密钥来加密数据,但解密数据必须要通过相应的私人密钥。使用SSL安全机制时,首先客户端与服务器建立连接,服务器把它的数字证书与公共密钥一并发送给客户端,客户端随机生成会话密钥,用从服务器得到的公共密钥对会话密钥进行加密,并把会话密钥在网络上传递给服务器,而会话密钥只有在服务器端用私人密钥才能解密,这样,客户端和服务器端就建立了一个惟一的安全通道。具体步骤如下:   (1) 启动ISM并打开Web站点的属性页;   (2) 选择“目录安全性”选项卡;   (3) 单击“密钥管理器”按钮;   (4) 通过密钥管理器生成密钥对文件和请求文件;   (5) 从身份认证权限中申请一个证书;   (6) 通过密钥管理器在服务器上安装证书;   (7) 激活Web站点的SSL安全性。   建立了SSL安全机制后,只有SSL允许的客户才能与SSL允许的Web站点进行通信,并且在使用URL资源定位器时,输入https:// ,而不是http:// 。   SSL安全机制的实现,将增大系统开销,增加了服务器CPU的额外负担,从而降低了系统性能,在规划时建议仅考虑为高敏感度的Web目录使用。另外,SSL客户端需要使用IE 3.0及以上版本才能使用。 ------------------------- Re如何用IIS建立高安全性Web服务器

中南时代 2019-12-02 01:16:10 0 浏览量 回答数 0

问题

利用SLB实现https与http的混合访问

仟与仟寻 2019-12-01 22:09:50 3521 浏览量 回答数 0

问题

java SSL连接异常 Remote host closed connectionduring报错

因为相信,所以看见。 2020-05-25 15:57:45 13 浏览量 回答数 1

回答

HTTPS基本原理 一、http为什么不安全。 http协议没有任何的加密以及身份验证的机制,非常容易遭遇窃听、劫持、篡改,因此会造成个人隐私泄露,恶意的流量劫持等严重的安全问题。 国外很多网站都支持了全站https,国内方面目前百度已经在年初完成了搜索的全站https,其他大型的网站也在跟进中,百度最先完成全站https的最大原因就是百度作为国内最大的流量入口,劫持也必然是首当其冲的,造成的有形的和无形的损失也就越大。关于流量劫持问题,我在另一篇文章中也有提到,基本上是互联网企业的共同难题,https也是目前公认的比较好的解决方法。但是https也会带来很多性能以及访问速度上的牺牲,很多互联网公司在做大的时候都会遇到这个问题:https成本高,速度又慢,规模小的时候在涉及到登录和交易用上就够了,做大以后遇到信息泄露和劫持,想整体换,代价又很高。 2、https如何保证安全 要解决上面的问题,就要引入加密以及身份验证的机制。 这时我们引入了非对称加密的概念,我们知道非对称加密如果是公钥加密的数据私钥才能解密,所以我只要把公钥发给你,你就可以用这个公钥来加密未来我们进行数据交换的秘钥,发给我时,即使中间的人截取了信息,也无法解密,因为私钥在我这里,只有我才能解密,我拿到你的信息后用私钥解密后拿到加密数据用的对称秘钥,通过这个对称密钥来进行后续的数据加密。除此之外,非对称加密可以很好的管理秘钥,保证每次数据加密的对称密钥都是不相同的。 但是这样似乎还不够,如果中间人在收到我的给你公钥后并没有发给你,而是自己伪造了一个公钥发给你,这是你把对称密钥用这个公钥加密发回经过中间人,他可以用私钥解密并拿到对称密钥,此时他在把此对称密钥用我的公钥加密发回给我,这样中间人就拿到了对称密钥,可以解密传输的数据了。为了解决此问题,我们引入了数字证书的概念。我首先生成公私钥,将公钥提供给相关机构(CA),CA将公钥放入数字证书并将数字证书颁布给我,此时我就不是简单的把公钥给你,而是给你一个数字证书,数字证书中加入了一些数字签名的机制,保证了数字证书一定是我给你的。 所以综合以上三点: 非对称加密算法(公钥和私钥)交换秘钥 + 数字证书验证身份(验证公钥是否是伪造的) + 利用秘钥对称加密算法加密数据 = 安全 3、https协议简介 为什么是协议简介呢。因为https涉及的东西实在太多了,尤其是一些加密算法,非常的复杂,对于这些算法面的东西就不去深入研究了,这部分仅仅是梳理一下一些关于https最基本的原理,为后面分解https的连接建立以及https优化等内容打下理论基础。 3.1 对称加密算法 对称加密是指加密和解密使用相同密钥的加密算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信至关重要。 对称加密又分为两种模式:流加密和分组加密。 流加密是将消息作为位流对待,并且使用数学函数分别作用在每一个位上,使用流加密时,每加密一次,相同的明文位会转换成不同的密文位。流加密使用了密钥流生成器,它生成的位流与明文位进行异或,从而生成密文。现在常用的就是RC4,不过RC4已经不再安全,微软也建议网络尽量不要使用RC4流加密。 分组加密是将消息划分为若干位分组,这些分组随后会通过数学函数进行处理,每次一个分组。假设需要加密发生给对端的消息,并且使用的是64位的分组密码,此时如果消息长度为640位,就会被划分成10个64位的分组,每个分组都用一系列数学公式公式进行处理,最后得到10个加密文本分组。然后,将这条密文消息发送给对端。对端必须拥有相同的分组密码,以相反的顺序对10个密文分组使用前面的算法解密,最终得到明文的消息。比较常用的分组加密算法有DES、3DES、AES。其中DES是比较老的加密算法,现在已经被证明不安全。而3DES是一个过渡的加密算法,相当于在DES基础上进行三重运算来提高安全性,但其本质上还是和DES算法一致。而AES是DES算法的替代算法,是现在最安全的对称加密算法之一。分组加密算法除了算法本身外还存在很多种不同的运算方式,比如ECB、CBC、CFB、OFB、CTR等,这些不同的模式可能只针对特定功能的环境中有效,所以要了解各种不同的模式以及每种模式的用途。这个部分后面的文章中会详细讲。 对称加密算法的优、缺点: 优点:算法公开、计算量小、加密速度快、加密效率高。 缺点:(1)交易双方都使用同样钥匙,安全性得不到保证; (2)每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。 (3)能提供机密性,但是不能提供验证和不可否认性。 3.2 非对称加密算法 在非对称密钥交换算法出现以前,对称加密一个很大的问题就是不知道如何安全生成和保管密钥。非对称密钥交换过程主要就是为了解决这个问题,使得对称密钥的生成和使用更加安全。 密钥交换算法本身非常复杂,密钥交换过程涉及到随机数生成,模指数运算,空白补齐,加密,签名等操作。 常见的密钥交换算法有RSA,ECDHE,DH,DHE等算法。涉及到比较复杂的数学问题,下面就简单介绍下最经典的RSA算法。RSA:算法实现简单,诞生于1977年,历史悠久,经过了长时间的破解测试,安全性高。缺点就是需要比较大的素数也就是质数(目前常用的是2048位)来保证安全强度,很消耗CPU运算资源。RSA是目前唯一一个既能用于密钥交换又能用于证书签名的算法。我觉得RSA可以算是最经典的非对称加密算法了,虽然算法本身都是数学的东西,但是作为最经典的算法,我自己也花了点时间对算法进行了研究,后面会详细介绍。 非对称加密相比对称加密更加安全,但也存在两个明显缺点: 1,CPU计算资源消耗非常大。一次完全TLS握手,密钥交换时的非对称解密计算量占整个握手过程的90%以上。而对称加密的计算量只相当于非对称加密的0.1%,如果应用层数据也使用非对称加解密,性能开销太大,无法承受。 2,非对称加密算法对加密内容的长度有限制,不能超过公钥长度。比如现在常用的公钥长度是2048位,意味着待加密内容不能超过256个字节。 所以公钥加密(极端消耗CPU资源)目前只能用来作密钥交换或者内容签名,不适合用来做应用层传输内容的加解密。 3.3 身份认证 https协议中身份认证的部分是由数字证书来完成的,证书由公钥、证书主体、数字签名等内容组成,在客户端发起SSL请求后,服务端会将数字证书发给客户端,客户端会对证书进行验证(验证查看这张证书是否是伪造的。也就是公钥是否是伪造的),并获取用于秘钥交换的非对称密钥(获取公钥)。 数字证书有两个作用: 1,身份授权。确保浏览器访问的网站是经过CA验证的可信任的网站。 2,分发公钥。每个数字证书都包含了注册者生成的公钥(验证确保是合法的,非伪造的公钥)。在SSL握手时会通过certificate消息传输给客户端。 申请一个受信任的数字证书通常有如下流程: 1,终端实体(可以是一个终端硬件或者网站)生成公私钥和证书请求。 2,RA(证书注册及审核机构)检查实体的合法性。如果个人或者小网站,这一步不是必须的。 3,CA(证书签发机构)签发证书,发送给申请者。 4,证书更新到repository(负责数字证书及CRL内容存储和分发),终端后续从repository更新证书,查询证书状态等。 数字证书验证: 申请者拿到CA的证书并部署在网站服务器端,那浏览器发起握手接收到证书后,如何确认这个证书就是CA签发的呢。怎样避免第三方伪造这个证书。答案就是数字签名(digital signature)。数字签名是证书的防伪标签,目前使用最广泛的SHA-RSA(SHA用于哈希算法,RSA用于非对称加密算法)数字签名的制作和验证过程如下: 1,数字签名的签发。首先是使用哈希函数对待签名内容进行安全哈希,生成消息摘要,然后使用CA自己的私钥对消息摘要进行加密。 2,数字签名的校验。使用CA的公钥解密签名,然后使用相同的签名函数对待签名证书内容进行签名并和服务端数字签名里的签名内容进行比较,如果相同就认为校验成功。 需要注意的是: 1)数字签名签发和校验使用的密钥对是CA自己的公私密钥,跟证书申请者提交的公钥没有关系。 2)数字签名的签发过程跟公钥加密的过程刚好相反,即是用私钥加密,公钥解密。 3)现在大的CA都会有证书链,证书链的好处一是安全,保持根CA的私钥离线使用。第二个好处是方便部署和撤销,即如果证书出现问题,只需要撤销相应级别的证书,根证书依然安全。 4)根CA证书都是自签名,即用自己的公钥和私钥完成了签名的制作和验证。而证书链上的证书签名都是使用上一级证书的密钥对完成签名和验证的。 5)怎样获取根CA和多级CA的密钥对。它们是否可信。当然可信,因为这些厂商跟浏览器和操作系统都有合作,它们的公钥都默认装到了浏览器或者操作系统环境里。 3.4 数据完整性验证 数据传输过程中的完整性使用MAC算法来保证。为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。 MAC算法是在密钥参与下的数据摘要算法,能将密钥和任意长度的数据转换为固定长度的数据。发送者在密钥的参与下,利用MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者。接收者利用同样的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比较。如果二者相同,则报文没有改变;否则,报文在传输过程中被修改,接收者将丢弃该报文。 由于MD5在实际应用中存在冲突的可能性比较大,所以尽量别采用MD5来验证内容一致性。SHA也不能使用SHA0和SHA1,中国山东大学的王小云教授在2005年就宣布破解了 SHA-1完整版算法。微软和google都已经宣布16年及17年之后不再支持sha1签名证书。MAC算法涉及到很多复杂的数学问题,这里就不多讲细节了。 专题二--【实际抓包分析】 抓包结果: fiddler: wireshark: 可以看到,百度和我们公司一样,也采用以下策略: (1)对于高版本浏览器,如果支持 https,且加解密算法在TLS1.0 以上的,都将所有 http请求重定向到 https请求 (2)对于https请求,则不变。 【以下只解读https请求】 1、TCP三次握手 可以看到,我们访问的是 http://www.baidu.com/ , 在初次建立 三次握手的时候, 用户是去 连接 8080端口的(因为公司办公网做了代理,因此,我们实际和代理机做的三次握手,公司代理机再帮我们去连接百度服务器的80端口) 2、CONNECT 建立 由于公司办公网访问非腾讯域名,会做代理,因此,在进行https访问的时候,我们的电脑需要和公司代理机做 " CONNECT " 连接(关于 " CONNECT " 连接, 可以理解为虽然后续的https请求都是公司代理机和百度服务器进行公私钥连接和对称秘钥通信,但是,有了 " CONNECT " 连接之后,可以认为我们也在直接和百度服务器进行公私钥连接和对称秘钥通信。 ) fiddler抓包结果: CONNECT之后, 后面所有的通信过程,可以看做是我们的机器和百度服务器在直接通信 3、 client hello 整个 Secure Socket Layer只包含了: TLS1.2 Record Layer内容 (1)随机数 在客户端问候中,有四个字节以Unix时间格式记录了客户端的协调世界时间(UTC)。协调世界时间是从1970年1月1日开始到当前时刻所经历的秒数。在这个例子中,0x2516b84b就是协调世界时间。在他后面有28字节的随机数( random_C ),在后面的过程中我们会用到这个随机数。 (2)SID(Session ID) 如果出于某种原因,对话中断,就需要重新握手。为了避免重新握手而造成的访问效率低下,这时候引入了session ID的概念, session ID的思想很简单,就是每一次对话都有一个编号(session ID)。如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的"对话密钥",而不必重新生成一把。 因为我们抓包的时候,是几个小时内第一次访问 https://www.baodu.com 首页,因此,这里并没有 Session ID. (稍会儿我们会看到隔了半分钟,第二次抓包就有这个Session ID) session ID是目前所有浏览器都支持的方法,但是它的缺点在于session ID往往只保留在一台服务器上。所以,如果客户端的请求发到另一台服务器,就无法恢复对话。session ticket就是为了解决这个问题而诞生的,目前只有Firefox和Chrome浏览器支持。 (3) 密文族(Cipher Suites): RFC2246中建议了很多中组合,一般写法是"密钥交换算法-对称加密算法-哈希算法,以“TLS_RSA_WITH_AES_256_CBC_SHA”为例: (a) TLS为协议,RSA为密钥交换的算法; (b) AES_256_CBC是对称加密算法(其中256是密钥长度,CBC是分组方式); (c) SHA是哈希的算法。 浏览器支持的加密算法一般会比较多,而服务端会根据自身的业务情况选择比较适合的加密组合发给客户端。(比如综合安全性以及速度、性能等因素) (4) Server_name扩展:( 一般浏览器也支持 SNI(Server Name Indication)) 当我们去访问一个站点时,一定是先通过DNS解析出站点对应的ip地址,通过ip地址来访问站点,由于很多时候一个ip地址是给很多的站点公用,因此如果没有server_name这个字段,server是无法给与客户端相应的数字证书的,Server_name扩展则允许服务器对浏览器的请求授予相对应的证书。 还有一个很好的功能: SNI(Server Name Indication)。这个的功能比较好,为了解决一个服务器使用多个域名和证书的SSL/TLS扩展。一句话简述它的工作原理就是,在连接到服务器建立SSL连接之前先发送要访问站点的域名(Hostname),这样服务器根据这个域名返回一个合适的CA证书。目前,大多数操作系统和浏览器都已经很好地支持SNI扩展,OpenSSL 0.9.8已经内置这一功能,据说新版的nginx也支持SNI。) 4、 服务器回复(包括 Server Hello, Certificate, Certificate Status) 服务器在收到client hello后,会回复三个数据包,下面分别看一下: 1)Server Hello 1、我们得到了服务器的以Unix时间格式记录的UTC和28字节的随机数 (random_S)。 2、Seesion ID,服务端对于session ID一般会有三种选择 (稍会儿我们会看到隔了半分钟,第二次抓包就有这个Session ID) : 1)恢复的session ID:我们之前在client hello里面已经提到,如果client hello里面的session ID在服务端有缓存,服务端会尝试恢复这个session; 2)新的session ID:这里又分两种情况,第一种是client hello里面的session ID是空值,此时服务端会给客户端一个新的session ID,第二种是client hello里面的session ID此服务器并没有找到对应的缓存,此时也会回一个新的session ID给客户端; 3)NULL:服务端不希望此session被恢复,因此session ID为空。 3、我们记得在client hello里面,客户端给出了21种加密族,而在我们所提供的21个加密族中,服务端挑选了“TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256”。 (a) TLS为协议,RSA为密钥交换的算法; (b) AES_256_CBC是对称加密算法(其中256是密钥长度,CBC是分组方式); (c) SHA是哈希的算法。 这就意味着服务端会使用ECDHE-RSA算法进行密钥交换,通过AES_128_GCM对称加密算法来加密数据,利用SHA256哈希算法来确保数据完整性。这是百度综合了安全、性能、访问速度等多方面后选取的加密组合。 2)Certificate 在前面的https原理研究中,我们知道为了安全的将公钥发给客户端,服务端会把公钥放入数字证书中并发给客户端(数字证书可以自签发,但是一般为了保证安全会有一个专门的CA机构签发),所以这个报文就是数字证书,4097 bytes就是证书的长度。 我们打开这个证书,可以看到证书的具体信息,这个具体信息通过抓包报文的方式不是太直观,可以在浏览器上直接看。 (点击 chrome 浏览器 左上方的 绿色 锁型按钮) 3)Server Hello Done 我们抓的包是将 Server Hello Done 和 server key exchage 合并的包: 4)客户端验证证书真伪性 客户端验证证书的合法性,如果验证通过才会进行后续通信,否则根据错误情况不同做出提示和操作,合法性验证包括如下: 证书链的可信性trusted certificate path,方法如前文所述; 证书是否吊销revocation,有两类方式离线CRL与在线OCSP,不同的客户端行为会不同; 有效期expiry date,证书是否在有效时间范围; 域名domain,核查证书域名是否与当前的访问域名匹配,匹配规则后续分析; 5)秘钥交换 这个过程非常复杂,大概总结一下: (1)首先,其利用非对称加密实现身份认证和密钥协商,利用非对称加密,协商好加解密数据的 对称秘钥(外加CA认证,防止中间人窃取 对称秘钥) (2)然后,对称加密算法采用协商的密钥对数据加密,客户端和服务器利用 对称秘钥 进行通信; (3)最后,基于散列函数验证信息的完整性,确保通信数据不会被中间人恶意篡改。 此时客户端已经获取全部的计算协商密钥需要的信息:两个明文随机数random_C和random_S与自己计算产生的Pre-master(由客户端和服务器的 pubkey生成的一串随机数),计算得到协商对称密钥; enc_key=Fuc(random_C, random_S, Pre-Master) 6)生成 session ticket 如果出于某种原因,对话中断,就需要重新握手。为了避免重新握手而造成的访问效率低下,这时候引入了session ID的概念, session ID的思想很简单,就是每一次对话都有一个编号(session ID)。如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的"对话密钥",而不必重新生成一把。 因为我们抓包的时候,是几个小时内第一次访问 https://www.baodu.com 首页,因此,这里并没有 Session ID. (稍会儿我们会看到隔了半分钟,第二次抓包就有这个Session ID) session ID是目前所有浏览器都支持的方法,但是它的缺点在于session ID往往只保留在一台服务器上。所以,如果客户端的请求发到另一台服务器,就无法恢复对话。session ticket就是为了解决这个问题而诞生的,目前只有Firefox和Chrome浏览器支持。 后续建立新的https会话,就可以利用 session ID 或者 session Tickets , 对称秘钥可以再次使用,从而免去了 https 公私钥交换、CA认证等等过程,极大地缩短 https 会话连接时间。 7) 利用对称秘钥传输数据 【半分钟后,再次访问百度】: 有这些大的不同: 由于服务器和浏览器缓存了 Session ID 和 Session Tickets,不需要再进行 公钥证书传递,CA认证,生成 对称秘钥等过程,直接利用半分钟前的 对称秘钥 加解密数据进行会话。 1)Client Hello 2)Server Hello

玄学酱 2019-12-02 01:27:08 0 浏览量 回答数 0

回答

回 1楼谦吉的帖子 应该是证书的问题,我在ASP里面用了另外一个COM组件 请求页面内容,报了同样的错误,如下: <script language="jscript" runat="server"> function getText(strURL) {     var strResult;          try     {         // Create the WinHTTPRequest ActiveX Object.         var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");                  //  Create an HTTP request.         var temp = WinHttpReq.Open("GET", strURL, false);         //  Send the HTTP request.         WinHttpReq.Send();                  //  Retrieve the response text.         strResult = WinHttpReq.ResponseText;     }     catch (objError)     {         strResult = objError + "\n"         strResult += "WinHTTP returned error: " +             (objError.number & 0xFFFF).toString() + "\n\n";         strResult += objError.description;     }          //  Return the response text.     return strResult; } //WScript.Echo(); </script> <% response.write getText("https://oapi.dingtalk.com/gettoken") %> 以上是今天测试的代码,用了微软的WinHttp 组件,依然报如下错误: [object Error] WinHTTP returned error: 12038 The host name in the certificate is invalid or does not match ------------------------- 回 1楼谦吉的帖子 对证书这块不是太了解,指点下,我的WIN2003 需要设置什么证书,需要做哪些信任 ------------------------- 回 1楼谦吉的帖子 SEVERXMLHTTP 是依赖于WinHTTP, 由此证明了,问题出在关于 服务器证书方面的问题,但是并不是所有HTTPS的请求都不行,比如本网页网址: https://bbs.aliyun.com/read/292395.html?spm=5176.bbsl276.0.0.oDcsNT 通过上述代码又是可以请求的,真是奇怪,目前就只有钉钉开放平台接口网址https://oapi.dingtalk.com/为首的都不行 ------------------------- Re回 1楼谦吉的帖子 引用第2楼ceadelta于2016-08-23 12:03发表的 回 1楼谦吉的帖子 : 应该是证书的问题,我在ASP里面用了另外一个COM组件 请求页面内容,报了同样的错误,如下: <script language="jscript" runat="server"> function getText(strURL) {     var strResult; ....... [url=https://bbs.aliyun.com/job.php?action=topost&tid=292395&pid=815771][/url] ERROR_WINHTTP_SECURE_CERT_CN_INVALID12038 Returned when a certificate CN name does not match the passed value (equivalent to a CERT_E_CN_NO_MATCH error). 这是微软给出的12038错误解释:证书CN名称和传递的值不匹配 ------------------------- 回 1楼谦吉的帖子 看了下HTTPS请求的流程: 问题出在上图哪个阶段?客户端验证这里? ------------------------- 回 6楼谦吉的帖子 服务器没有安装证书的,服务器向你们的HTTPS接口请求数据,我们的服务器需要安装证书吗? ------------------------- 回 6楼谦吉的帖子 我们的服务器没有做SSL等配置,从服务器后台向你们的 https://oapi.dingtalk.com接口请求数据 报错:The host name in the certificate is invalid or does not match   证书主机名不匹配,他说的这个证书是你们服务器传递过来的?还是哪来的 ------------------------- 回 10楼谦吉的帖子 看了,文档貌似是针对UNIX or Linux 系统的 ------------------------- ReIIS请求AccessToken报错msxml3.dll 错误80072f06 引用第10楼谦吉于2016-08-23 22:48发表的  : 这个证书应该是指你本地的证书 https://technet.microsoft.com/en-us/library/dd891009.aspx 这里有个微软的文档,你看下 [url=https://bbs.aliyun.com/job.php?action=topost&tid=292395&pid=815986][/url] 我想问下,服务器向其他服务器发出HTTPS请求, 服务器需要事先配置好自己的证书吗,对这块确实不太了解,这个证书不是要访问的其他服务器发的? ------------------------- ReIIS请求AccessToken报错msxml3.dll 错误80072f06 没解决,最后换服务器了。。。。。。一劳永逸

ceadelta 2019-12-02 02:14:12 0 浏览量 回答数 0

问题

配置七层监听

行者武松 2019-12-01 21:36:08 1822 浏览量 回答数 0

回答

楼主您好, 请问您是将整个服务器里的http(80)访问请求都重定向到https(443)了吗? 一般情况,IIS7.5可能仅支持单个独立IP上的一个SSL证书站点。 按理说,http和https是不直接相关的,如果用户访问的是 http://www.b.com 是不会重定向到 https://www.a.com 的。 ------------------------- 您好,仅google搜索引擎的蜘蛛这样,其它的会否如此? ------------------------- 回 4楼(facekiss) 的帖子 您好, 很高兴听到您已经解决了问题,且分享了解决问题的方法。

dongshan8 2019-12-01 23:40:10 0 浏览量 回答数 0

问题

SLB环境下apache的部分https跳转规则

jinghuiliu 2019-12-01 21:22:45 6463 浏览量 回答数 2

问题

CDN证书相关常见问题

樰篱 2019-12-01 21:51:49 2277 浏览量 回答数 0

回答

步骤一:添加HTTPS监听 完成以下操作,添加七层HTTPS监听: 在左侧导航栏,选择实例 > 实例管理。 在实例管理页面,单击性能保障型实例SLB1操作列的监听配置向导。 首次配置监听,也可以单击端口/健康检查/后端服务器列的点我开始配置。 配置监听。 本操作的主要配置如下,其他配置请参见添加HTTPS监听。 双向认证:关闭。 SSL证书:选择服务器证书default。 后端服务器:需要创建test1和test2两个虚拟服务器组。 步骤二:配置转发规则 完成以下操作,配置转发规则: 单击SLB1实例ID,进入实例详情页面。 在监听页签下,找到已创建的HTTPS监听,单击添加转发策略。 在转发策略页面,配置转发策略,详情请参见基于域名/URL路径进行转发。 本教程中配置域名转发规则,URL不进行设置。 设置规则名称,在域名操作列输入*.example1.com,选择test1虚拟服务器组,单击添加转发策略 +。 设置规则名称,在域名操作列输入www.example2.com,选择test2虚拟服务器组,单击确认。 说明 转发规则中设置的域名,必须与证书中和步骤三:添加扩展域名中添加的扩展域名保持一致。 步骤三:添加扩展域名 完成以下操作,添加扩展域名: 单击SLB1实例ID,进入实例详情页面。 在监听页签下,找到已创建的HTTPS监听,选择更多 > 扩展域名管理。 在扩展域名管理页面,单击添加扩展域名,配置扩展域名。 输入域名。域名只能使用字母、数字、连字符(-)、点(.)。 域名转发策略支持精确匹配和通配符匹配两种模式: 精确域名:www.aliyun.com 通配符域名(泛域名): *.aliyun.com, *.market.aliyun.com 当前端请求同时匹配多条域名策略时,策略的匹配优先级为:精确匹配高于小范围通配符匹配, 小范围通配符匹配高于大范围通配符匹配,如下表所示。 模式 请求测试URL 配置的转发域名策略 www.aliyun.com *.aliyun.com *.market.aliyun.com 精确匹配 www.aliyun.com ✓ × × 泛域名匹配 market.aliyun.com × ✓ × 泛域名匹配 info.market.aliyun.com × × ✓ 选择该域名关联的证书。 说明 证书中的域名和您添加的扩展域名必须一致。 注意 配置完成后,如果出现问题,请尝试重启浏览器后再测试,避免缓存对结果的影响。

保持可爱mmm 2020-03-29 11:50:07 0 浏览量 回答数 0

回答

步骤一:上传服务器证书 在配置HTTPS监听(单向认证)前,您需要购买服务器证书,并将服务器证书上传到负载均衡的证书管理系统。上传后,无需在后端ECS上进行其它证书配置。 登录负载均衡管理控制台。 在左侧导航栏,选择证书管理,单击创建证书。 单击上传第三方签发证书。 按照以下信息,配置证书: 证书名称:长度限制为1~80个字符,只允许包含字母、数字、短横线(-)、正斜杠(/)、点号(.)、下划线(_)和注释符(*) 。 证书部署地域:选择华东1(杭州)。 说明 证书的地域和负载均衡实例的地域要相同。 证书类型:选择服务器证书。 证书内容和私钥:复制服务器证书的内容和私钥。单击导入样例查看合法的证书格式。上传的证书必须是PEM格式,详情请参见证书要求。 单击确定,完成上传。 步骤二:配置负载均衡实例 登录负载均衡管理控制台。 在实例管理页面,单击创建负载均衡。 配置负载均衡实例,单击立即购买完成支付。 说明 网络类型选择公网,地域选择华东1。详细配置信息请参见创建负载均衡实例。 创建成功后,返回实例管理页面,选择华东1(杭州)地域。 单击已创建的负载均衡实例ID链接,或者直接单击监听设置向导。 在监听页签下,单击添加监听。 在协议&监听页签下,完成如下配置。 选择负载均衡协议:HTTPS 监听端口:443 调度算法:轮询(RR) 单击下一步,在SSL证书页签下,选择已经上传的服务器证书和TLS安全策略。 单击下一步,选择默认服务器组,单击继续添加,添加ECS服务器,后端协议监听端口设置为80。 其他参数保持默认值,单击下一步至确定,完成负载均衡实例配置。 步骤三:测试负载均衡服务 负载均衡实例配置完成后,在实例管理页面,查看健康检查状态。 当状态为正常时,表示后端服务器可以正常接收处理负载均衡监听转发的请求。 在浏览器中输入负载均衡的公网服务地址。

保持可爱mmm 2020-03-29 11:47:14 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板