1、https协议须要到ca申请证书,通常免费证书不多,须要交费。html
2、http是超文本传输协议,信息是明文传输,https 则是具备安全性的ssl加密传输协议。
web
3、http和https使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。
算法
4、http的链接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。apache
https 就是在http上又加了一层(SSL)浏览器
https相对于http速度要慢,seo很差,由于百度不会收录https的网站tomcat
SSL:安全套接层协议(Secure Socket Layer)安全
SSL协议位于TCP/IP协议与各类应用层协议之间,是一种国际标准的加密及身份认证通讯协议,为TCP提供一个可靠的端到端的安全服务,为两个通信个体之间提供保密性和完整性(身份鉴别)。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它创建在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它创建在SSL记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。服务器
tomcat 配置https网络
单向认证,就是传输的数据加密过了,可是不会校验客户端的来源
双向认证,若是客户端浏览器没有导入客户端证书,是访问不了web系统的数据结构
生成单向证书
1.生成服务器端证书文件(本身生成的证书,打开网页不会被受信任,须要添加信任才能访问,须要到CA权威的机构申请全世界都认证的证书。。。。。)
keytool -genkey -alias tomcat -keyalg RSA -keystore F:\tomcat.keystore -validity 36500
表示有效期100年默认90天
2.修改tomcat下server.xml文件
到这里启动tomcat,输入 https://localhost:8443/,是访问不了的:缘由客户端证书没有导入浏览器
双击 “C:\my.p12” 便可将证书导入至 IE :输入建立时候的密码,password
这时再打开会弹出一个提示框:证书不可信任,有一个警告,说什么须要机构颁发。
这时再双击第一步生成的tomcat.cer。一直下一步,最后选“是”。
导入后,再输入地址就不是提示了。直接转向tomcat的猫页,说明成功了。
其余:
1.ssl默认端口是443,若是web系统不须要带端口访问的,能够修改
2.若是要批量生成客户端的话,找找批量生成工具
根据公钥 私钥生成证书
https://blog.csdn.net/ca1m0921/article/details/82833556
服务端证书
keytool -genkey -v -alias jit -keyalg RSA -validity 3650 -keystore D:\zhengshu\生成\gwcs.keystore -dname "CN=localhost,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 11111111 -keypass 11111111 客户端证书 keytool -genkey -v -alias jitclient -keyalg RSA -storetype PKCS12 -keystore D:\zhengshu\生成\测试1.p12 -dname "CN=测试员2, C=CN" -storepass 11111111 -keypass 11111111
客户端证书转cer keytool -export -alias jitclient -keystore D:\zhengshu\生成\测试1.p12 -storetype PKCS12 -storepass 11111111 -rfc -file D:\zhengshu\生成\测试1.cer
让服务端信任客户端证书 keytool -import -v -file D:\zhengshu\生成\测试1.cer -keystore D:\zhengshu\生成\gwcs.keystore
1、问题现象
火狐浏览器打开HTTPS服务请求报出“服务器密钥交换握手信息中 SSL 收到了一个弱临时 Diffie-Hellman 密钥,错误码是“ssl_error_weak_server_ephemeral_dh_key”,以下图所示
2、解决问题
这时由于Firefox浏览器对于证书认证比较严格,而IE比较松
A.方法一:从根本上解决问题,需从服务端修改,在tomcat的server.xml配置Connector属性从添加 ciphers属性 (以下倒数第二行)
<
Connector
port
=
"8443"
protocol
=
"HTTP/1.1"
SSLEnabled
=
"true"
maxThreads
=
"150"
scheme
=
"https"
secure
=
"true"
clientAuth
=
"false"
sslProtocol
=
"TLS"
keystoreFile
=
"conf/test.keystore"
keystorePass
=
"changeit"
truststoreFile
=
"C:/NJ/PF/Java/jdk1.6.0_39/jre/lib/security/cacerts"
ciphers
=
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"
/>
|
B.方法二:临时解决问题,配置Firefox浏览器,在地址输入“about:config”,把security.ssl3.dhe_rsa_aes_128_sha设置为false,security.ssl3.dhe_rsa_aes_256_sha也设置为false,默认都是true,以下图所示
C.方法三:安装disable dhe插件,点击下载,以下图