① 如何访问https的网站
要想访问的是https网站的话,那么首要的前提就是该网站是安装了SSL证书,只要安装部署了SSL证书才可以实现https化,然后直接在各大主流浏览器上就可以正常访问了。
② 在项目里如何通过http/https实现https协议访问
项目里需要访问其他接口,通过http/https协议。我们一般是用HttpClient类来实现具体的http/https协议接口的调用。
// Init a HttpClient
HttpClient client = new HttpClient();
String url=http://www.xxx.com/xxx;
// Init a HttpMethod
HttpMethod get = new GetMethod(url);
get.setDoAuthentication(true);
get.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(1, false));
// Call http interface
try {
client.executeMethod(get);
// Handle the response from http interface
InputStream in = get.getResponseBodyAsStream();
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
} finally {
// Release the http connection
get.releaseConnection();
}
以上代码在通过普通的http协议是没有问题的,但如果是https协议的话,就会有证书文件的要求了。一般情况下,是这样去做的。
// Init a HttpClient
HttpClient client = new HttpClient();
String url=https://www.xxx.com/xxx;
if (url.startsWith("https:")) {
System.setProperty("javax.net.ssl.trustStore", "/.sis.cer");
System.setProperty("javax.net.ssl.trustStorePassword", "public");
}
于是,这里就需要事先生成一个.sis.cer的文件,生成这个文件的方法一般是先通过浏览器访问https://,导出证书文件,再用JAVA keytool command 生成证书
# $JAVA_HOME/bin/keytool -import -file sis.cer -keystore .sis.cer
但这样做,一比较麻烦,二来证书也有有效期,过了有效期之后,又需要重新生成一次证书。如果能够避开生成证书文件的方式来使用https的话,就比较好了。
还好,在最近的项目里,我们终于找到了方法。
// Init a HttpClient
HttpClient client = new HttpClient();
String url=https://www.xxx.com/xxx;
if (url.startsWith("https:")) {
this.supportSSL(url, client);
}
用到了supportSSL(url, client)这个方法,看看这个方法是如何实现的。
private void supportSSL(String url, HttpClient client) {
if(StringUtils.isBlank(url)) {
return;
}
String siteUrl = StringUtils.lowerCase(url);
if (!(siteUrl.startsWith("https"))) {
return;
}
try {
setSSLProtocol(siteUrl, client);
} catch (Exception e) {
logger.error("setProtocol error ", e);
}
Security.setProperty( "ssl.SocketFactory.provider",
"com.tool.util.DummySSLSocketFactory");
}
private static void setSSLProtocol(String strUrl, HttpClient client) throws Exception {
URL url = new URL(strUrl);
String host = url.getHost();
int port = url.getPort();
if (port <= 0) {
port = 443;
}
ProtocolSocketFactory factory = new SSLSocketFactory();
Protocol authhttps = new Protocol("https", factory, port);
Protocol.registerProtocol("https", authhttps);
// set https protocol
client.getHostConfiguration().setHost(host, port, authhttps);
}
在supportSSL方法里,调用了Security.setProperty( "ssl.SocketFactory.provider",
"com.tool.util.DummySSLSocketFactory");
那么这个com.tool.util.DummySSLSocketFactory是这样的:
访问https 资源时,让httpclient接受所有ssl证书,在weblogic等容器中很有用
代码如下:
1. import java.io.IOException;
2. import java.net.InetAddress;
3. import java.net.InetSocketAddress;
4. import java.net.Socket;
5. import java.net.SocketAddress;
6. import java.net.UnknownHostException;
7. import java.security.KeyManagementException;
8. import java.security.NoSuchAlgorithmException;
9. import java.security.cert.CertificateException;
10. import java.security.cert.X509Certificate;
11.
12. import javax.net.SocketFactory;
13. import javax.net.ssl.SSLContext;
14. import javax.net.ssl.TrustManager;
15. import javax.net.ssl.X509TrustManager;
16.
17. import org.apache.commons.httpclient.ConnectTimeoutException;
18. import org.apache.commons.httpclient.params.HttpConnectionParams;
19. import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;
20.
21. public class MySecureProtocolSocketFactory implements SecureProtocolSocketFactory {
22. static{
23. System.out.println(">>>>in MySecureProtocolSocketFactory>>");
24. }
25. private SSLContext sslcontext = null;
26.
27. private SSLContext createSSLContext() {
28. SSLContext sslcontext=null;
29. try {
30. sslcontext = SSLContext.getInstance("SSL");
31. sslcontext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
32. } catch (NoSuchAlgorithmException e) {
33. e.printStackTrace();
34. } catch (KeyManagementException e) {
35. e.printStackTrace();
36. }
37. return sslcontext;
38. }
39.
40. private SSLContext getSSLContext() {
41. if (this.sslcontext == null) {
42. this.sslcontext = createSSLContext();
43. }
44. return this.sslcontext;
45. }
46.
47. public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
48. throws IOException, UnknownHostException {
49. return getSSLContext().getSocketFactory().createSocket(
50. socket,
51. host,
52. port,
53. autoClose
54. );
55. }
56.
57. public Socket createSocket(String host, int port) throws IOException,
58. UnknownHostException {
59. return getSSLContext().getSocketFactory().createSocket(
60. host,
61. port
62. );
63. }
64.
65.
66. public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort)
67. throws IOException, UnknownHostException {
68. return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort);
69. }
70.
71. public Socket createSocket(String host, int port, InetAddress localAddress,
72. int localPort, HttpConnectionParams params) throws IOException,
73. UnknownHostException, ConnectTimeoutException {
74. if (params == null) {
75. throw new IllegalArgumentException("Parameters may not be null");
76. }
77. int timeout = params.getConnectionTimeout();
78. SocketFactory socketfactory = getSSLContext().getSocketFactory();
79. if (timeout == 0) {
80. return socketfactory.createSocket(host, port, localAddress, localPort);
81. } else {
82. Socket socket = socketfactory.createSocket();
83. SocketAddress localaddr = new InetSocketAddress(localAddress, localPort);
84. SocketAddress remoteaddr = new InetSocketAddress(host, port);
85. socket.bind(localaddr);
86. socket.connect(remoteaddr, timeout);
87. return socket;
88. }
89. }
90.
91. //自定义私有类
92. private static class TrustAnyTrustManager implements X509TrustManager {
93.
94. public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
95. }
96.
97. public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
98. }
99.
100. public X509Certificate[] getAcceptedIssuers() {
101. return new X509Certificate[]{};
102. }
103. }
104.
105. }
public class MySecureProtocolSocketFactory implements SecureProtocolSocketFactory {
static{
System.out.println(">>>>in MySecureProtocolSocketFactory>>");
}
private SSLContext sslcontext = null;
private SSLContext createSSLContext() {
SSLContext sslcontext=null;
try {
sslcontext = SSLContext.getInstance("SSL");
sslcontext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
return sslcontext;
}
private SSLContext getSSLContext() {
if (this.sslcontext == null) {
this.sslcontext = createSSLContext();
}
return this.sslcontext;
}
public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
throws IOException, UnknownHostException {
return getSSLContext().getSocketFactory().createSocket(
socket,
host,
port,
autoClose
);
}
public Socket createSocket(String host, int port) throws IOException,
UnknownHostException {
return getSSLContext().getSocketFactory().createSocket(
host,
port
然后按如下方式使用HttpClient
Protocol myhttps = new Protocol("https", new MySecureProtocolSocketFactory (), 443);
Protocol.registerProtocol("https", myhttps);
HttpClient httpclient=new HttpClient();
③ 如何选择SSL证书来实现https访问网站
一、根据证书的安全等级选择域名型DV SSL证书:表现形式为地址栏显示安全锁+https;适用于中小型企业官网、中小型商务网站、电子邮局服务器、个人网站等,10分钟左右就可完成域名验证和快速颁发证书,无需递交纸质文件,仅验证域名管理权,无需人工验证申请单位真实身份,快速签发、价格低廉。
企业型OV SSL证书:表现形式为地址栏显示安全锁+https,且SSL证书详情有企业信息,无法仿造;适用于企业官网、商务网站、证券、金融机构等,通过证书颁发机构审查网站企业身份和域名所有权以证明申请单位是一个合法存在的真实实体,用户可以在证书里面看到申请SSL证书的公司名称。一般OV 证书在 1 至 5 个工作日内签发。
增强型EV SSL证书:这个被认为是现有最安全的证书之一。表现形式为绿色地址栏显示公司名称+安全锁+https,适用于金融证券、银行、第三方支付、网上商城等,重点强调网站安全和品牌可信形象的网站,涉及交易支付、客户隐私信息和账号密码的传输,建议选择显示绿色地址栏的EV SSL证书,更值得用户信赖。
涉及资金交易、机密信息传输等对安全性能要求高的网站,请选择支持强制128/256位加密的SSL证书,规避部分用户未升级浏览器导致加密位数较低而产生的安全风险。建议此类网站尽量采用安全性能更高的强制加密证书。另外其他不涉及交易、机密数据或敏感信息传输的网站,也可根据自身需求和风险评估,选择价格实惠的自适应加密SSL证书。
二、根据域名数量选择
单域名SSL证书:如果您只有一个域名,您可以获得单域名SSL证书。如果您有一个主要基于内容的相对简单和直接的网站,则单个域SSL证书是最佳选择。大多数个人网站属于该类别。
多域名SSL证书:多域名数字证书是指一张证书可以保护多个域名,这样在证书的管理和续费上都能带来很大的便利。如果您拥有多个域名的网站,则可以选择多域名SSL证书,只需安装一个证书,就能轻松保护多个域名。
通配符SSL证书:通配符域名证书,适用于同一主域名下同一级所有的子域名,不限个数。通配符证书可以保护通用域名和您在提交申请时指定的级别下的所有子域,只需在通用域名左侧的子域区域添加星号 (*) 即可。
SSL证书证书根据不同类型其支持功能也不一样。一般情况,一张SSL证书对应一个域名。只有选择通配符证书以及多域名证书才支持多个域名。因此用户要想拥有多个域名或者通配符域名,是要根据SSL证书的支持类型来选择的。
很多证书颁发机构都可以出售证书,由于SSL证书种类繁多,选择购买SSL证书前。要根据自己网站类型做判断,来挑选适合的证书。或者通过SSL证书类型分类确定,网站更适合哪种类型。比如:拥有子域名的网站就选通配符型证书,拥有多个域名的网站则应当选多域名型证书。
三、根据网站类别选择
个人网站:如果经营的是小型的个人网站,是个人站长或者自媒体,需要HTTPS但是对于网站信誉度没有过高的要求,那么就可以选择域名验证证书(DV)。DV证书签发速度快,价格便宜,通常十分钟内就可完成签发,无需复杂的网站身份验证过程,支持HTTPS和安全挂锁标志,性价比极高。
企业网站:如果经营的是普通企业类网站,涉及注册、登录、会员中心等页面,那么推荐使用企业型SSL证书(OV)或增强型SSL证书(EV)。这两种证书都要求对网站所属者的身份进行认证,能够证明网站的真实身份,杜绝钓鱼网站,并且更好得保护访客的个人信息安全。EV证书会使网站地址栏变绿,利于品牌推广,更容易赢得客户信赖。
电商网站:对于电商类网站来说,用户的信息安全和网站的品牌形象是购买SSL证书的关键因素。电商类网站涉及交易支付、客户隐私信息以及账号密码等,需要更高一级的加密。并且电商类网站访问量较大,品牌形象较为重要,推荐使用专业版企业型SSL证书(OV)或专业版增强型SSL证书(EV)。
金融类网站:金融证券、银行、第三方支付网站通常需要最高级别的安全保护,不仅仅涉及到用户的隐私信息、信用卡信息、支付安全等,更对于网站的真实身份有着高标准的需求。增强型扩展验证证书(EV)最适合金融类网站使用,EV证书指遵照全球统一标准颁发的SSL证书,对网站进行严格的身份验证,是目前安全级别最高的SSL证书。并且在安装EV证书之后,浏览器会直观显示绿色地址栏和中文单位名称,安全可信一目了然。

④ 如何实现https
第一步:将CSR提交到代理商
CSR(Certificate Signing Request)文件必须由用户自己生成,也可以利用在线CSR生成工具。选择要申请的产品,提交一个新的订单,并将制作好的CSR文件提交。
第二步 资料提交到CA
当收到您的订单和CSR后,如果是域名验证型证书(DV SSL证书),在域名验证之后10分钟左右就可颁发证书,若是其他类型证书则是需要通过CA机构进行验证之后才可颁发。
第三步 发送验证邮件到管理员邮箱
权威CA机构获得资料后,将发送一封确认信到管理员邮箱,信中将包含一个 对应的链接过去。每一个订单,都有一个唯一的PIN以做验证用。
第四步 邮件验证
点击确认信中的链接,可以访问到CA机构验证网站,在验证网站,可以看到该订单的申请资料,然后点击”I Approve”完成邮件验证。
第五步 颁发证书
在用户完成邮件验证之后,CA机构会将证书通过邮件方式发送到申请人自己的邮箱。
当用户收到SSL证书后就可以配置到服务器上就可以实现HTTPS加密了。
⑤ 如何将网站设置成https访问的模式
一、申请SSL 签发证书。
二、准备好独立服务器或云服务器、域名。
三、拿到签发的SSL证书,根据机构教程安装到服务器。
四、测试HTTPS网站是否正常。
⑥ 如何访问https的网站
SSL证书+域名或公网IP+服务器配置证书=HTTPS访问
启动https访问:
确定需要HTTPS的域名,进入淘宝中找到:Gworg,选择SSL证书申请。
获得SSL证书配置到服务器就可以实现HTTPS访问了。
快速解决办法:直接找到Gworg提供域名与服务器信息可以快速实现网站HTTPS。
⑦ 如何让自己的网站也能实现https访问
很简单,去安信证书申请一张合适的SSL证书部署到服务器上,网站就能实现https访问。SSL证书申请流程如下:
第一步,生成并提交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个工作日就能颁发。
完成以上SSL证书申请步骤收到CA的证书之后,就可以将证书部署到服务器上实现https加密访问。
⑧ 如何选择SSL证书来实现https访问网站
1、根据证书的类型
DV SSL证书(域名验证型):只验证域名所有适合个人网站、博客等站点使用;OV SSL证书(企业验证型):验证网站所属单位身份,适合于中型企业级用户使用;EV SSL证书 (扩展验证型):扩展验证网站所属单位身份,适合高度信任的企业级用户使用。如金融行业的银行,电子商务平台。
2、支持的域名数量
SSL证书证书根据不同类型其支持功能也不一样。一般情况,一张SSL证书对应一个域名。只有通配符证书以及多域名证书才支持多个域名。因此用户拥有多个域名或者通配符域名,可根据SSL证书的支持类型来选择。
通配符域名证书,可以保护一个域名以及该域名所有的二级子域名,不限制子域名数量,且添加新的子域名无须重新审核和另外付费,节约了大量的时间和金钱成本。
3、网站加密需求
涉及资金交易、机密信息传输等对安全性能要求高的网站,请选择支持强制128/256位加密的SSL证书,规避部分用户未升级浏览器导致加密位数较低而产生的安全风险。顶级EV SSL证书和企业级OV SSL证书都支持强制128/256位加密,建议此类网站尽量采用安全性能更高的强制加密证书。另外其他不涉及交易、机密数据或敏感信息传输的网站,也可根据自身需求和风险评估,选择价格实惠的自适应加密SSL证书。