当前位置: 首页 > news >正文

如何开发一个网站南京宜电的网站谁做的

如何开发一个网站,南京宜电的网站谁做的,怎么购买云服务器,企业网站为什么要备案Android自制Https证书实现双向认证 1.基本概念1.1 HTTP1.2 HTTPS1.3 加密方式1.3.1 对称加密1.3.2 非对称加密 1.4 SSL 功能1.4.1 客户对服务器的身份认证1.4.2 服务器对客户的身份认证1.4.3 建立服务器与客户之间安全的数据通道 1.5 CA 证书 2.证书生成2.1 生成根证书#xf… Android自制Https证书实现双向认证 1.基本概念1.1 HTTP1.2 HTTPS1.3 加密方式1.3.1 对称加密1.3.2 非对称加密 1.4 SSL 功能1.4.1 客户对服务器的身份认证1.4.2 服务器对客户的身份认证1.4.3 建立服务器与客户之间安全的数据通道 1.5 CA 证书 2.证书生成2.1 生成根证书CA2.2 生成服务器证书2.3 生成客户端证书 3.集成方式3.1 使用 OkHttp 进行 HTTPS 请求3.2 使用原生请求进行 HTTPS 请求 4. 结束 1.基本概念 1.1 HTTP Hyper Text Transfer Protocol 超文本传输协议 是互联网使用最广泛的一种协议所有的WWW文件必须遵循的标准Http协议传输的数据都是未加密的也就是明文因此使用Http传输敏感协议是不安全的。 1.2 HTTPS Hyper Text Transfer Protocol over Secure Socket Layer安全的超文本传输协议其实就是Http外部套了一层TLS的壳简单来讲HTTPS 就是“安全版”的 HTTP, HTTPS HTTP SSLHttps 相当于在应用层和TCP层之间加入了一个SSL或者TLS,SSL层对应用层收到的数据进行加密。 1.3 加密方式 1.3.1 对称加密 对称加密是指双方持有相同的密钥进行通信 加密速度快常见的对称加密算法有DES\3DES\AES等~ 1.3.2 非对称加密 非对称加密又称为公开密钥加密是为了解决对阵加密中的安全问题而诞生一个称为公开密钥公钥 Public key另一个成为私钥Private key 但是相对而言非非对称而言要慢于对称加密 1.公钥是对外开放的私钥是自己拥有的 2.公钥加密的数据只能用私钥解密 3.私钥加密的数据只能用公钥解密TLS/SSL 中使用了RSA非对称加密对称加密以及HASH算法RSA算法基于一个十分简单的数论事实将两个大素数相乘十分容易但那时想要对其乘积进行因式分解却极其困难因此可以将乘积公开作为加密密钥 SSL 协议既用到了对称加密也用到了非对称加密(公钥加密)在建立传输链路时SSL 首先对对称加密的密钥使用公钥进行非对称加密链路建立好之后SSL 对传输内容使用对称加密。 对称加密 速度高可加密内容较大用来加密会话过程中的消息 公钥加密 加密速度较慢但能提供更好的身份认证技术用来加密对称加密的密钥 1.4 SSL 功能 1.4.1 客户对服务器的身份认证 SSL 服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心CA的证书来确认服务器的合法性~ 1.4.2 服务器对客户的身份认证 也可通过公钥技术和证书进行认证也可通过用户名password 来认证~ 1.4.3 建立服务器与客户之间安全的数据通道 SSL 要求客户与服务器之间的所有发送的数据都被发送端加密、接收端解密同时还检查数据的完整性。 SSL 协议位于 TCP/IP 协议与各种应用层协议之间为数据通讯提供安全支持~ 1.5 CA 证书 CA 证书是由 CACertification Authority机构发布的数字证书。其内容包含电子签证机关的信息、公钥用户信息、公钥、签名和有效期。这里的公钥服务端的公钥这里的签名是指用hash散列函数计算公开的明文信息的信息摘要然后采用 CA 的私钥对信息摘要进行加密加密完的密文就是签名。 即证书 公钥 签名 申请者和颁发者的信息。 客户端中因为在操作系统中就预置了 CA 的公钥所以支持解密签名 2.证书生成 基本概念讲完之后我们来实际操作一下证书的生成博主这边主要使用到了open ssl~ 2.1 生成根证书CA 首先生成一个自签名的根证书作为根证书颁发机构CA 并生成根证书~ 使用 OpenSSL 工具来生成 openssl genrsa -out ca.key 2048 openssl req -x509 -new -nodes -key ca.key -sha256 -days 365 -out ca.crttips:此步骤将要求提供一些信息如国家、组织、通用名称等。填写这些信息时要确保准确性但在测试环境中可以使用虚拟的信息。 2.2 生成服务器证书 生成服务器证书并签署为受信任的证书 openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csropenssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha2562.3 生成客户端证书 创建客户端密钥,生成证书签名请求CSR并签署客户端证书 openssl genrsa -out client.key 2048 openssl req -new -key client.key -out client.csropenssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365 -sha256 需要注意的是 保护密钥和证书 密钥和证书必须得到妥善保护确保只有授权的人能够访问 证书有效期 在创建证书时设置适当的有效期限确保证书在过期之前能够持续有效 证书更新 定期更新证书以确保安全性。在证书到期之前应当重新生成并部署新的证书 3.集成方式 3.1 使用 OkHttp 进行 HTTPS 请求 将客户端证书和私钥文件放置到 Android 项目中 将客户端的证书文件client.crt和私钥文件client.key放置到 Android 项目的合适目录中例如 res/raw 文件夹集成对应okhttp 框架 implementation com.squareup.okhttp3:okhttp:4.9.3在 Android 代码中使用 OkHttp 进行请求 import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response;import java.io.InputStream; import java.security.KeyStore; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate;import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509TrustManager;public class MyOkHttpClient {public static Response makeRequest() {try {// Load server certificateCertificateFactory certificateFactory CertificateFactory.getInstance(X.509);InputStream serverCertStream getResources().openRawResource(R.raw.server);X509Certificate serverCertificate (X509Certificate) certificateFactory.generateCertificate(serverCertStream);// Create KeyStore and TrustManagerKeyStore keyStore KeyStore.getInstance(KeyStore.getDefaultType());keyStore.load(null, null);keyStore.setCertificateEntry(server, serverCertificate);TrustManagerFactory trustManagerFactory TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());trustManagerFactory.init(keyStore);// Load client certificate and private keyKeyStore clientKeyStore KeyStore.getInstance(PKCS12);InputStream clientCertStream getResources().openRawResource(R.raw.client);clientKeyStore.load(clientCertStream, client_password.toCharArray()); // Replace client_password with the password of your client keyKeyManagerFactory keyManagerFactory KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());keyManagerFactory.init(clientKeyStore, client_password.toCharArray()); // Replace client_password with the password of your client key// Initialize SSLContext with TrustManager and KeyManagerSSLContext sslContext SSLContext.getInstance(TLS);sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);// Set up OkHttpClient with SSL socket factoryOkHttpClient client new OkHttpClient.Builder().sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustManagerFactory.getTrustManagers()[0]).build();// Make a request using OkHttpClientRequest request new Request.Builder().url(https://your-server-url.com/api/endpoint).build();return client.newCall(request).execute();} catch (Exception e) {e.printStackTrace();}return null;} } 这个示例代码假设您有服务器证书和客户端证书包括私钥的文件。需要替换以下部分 R.raw.server: 服务器证书文件的资源 ID。确保将正确的服务器证书文件通常为 server.crt放置到 Android 项目中并使用相应的资源 ID 替换。 R.raw.client: 客户端证书文件的资源 ID。确保将正确的客户端证书和私钥文件通常为 client.p12 或 client.pfx放置到 Android 项目中并使用相应的资源 ID 替换。 “client_password”: 替换为您客户端证书的密码 当然一些基础的例如网络权限等操作也是必备在此不再赘述~ 3.2 使用原生请求进行 HTTPS 请求 第一步同 3.1 在此不再赘述~ 以下是集成代码 try {KeyStore keyStore KeyStore.getInstance(PKCS12);InputStream clientCertStream getResources().openRawResource(R.raw.client);keyStore.load(clientCertStream, password.toCharArray()); // Replace password with the password of your client keyKeyManagerFactory keyManagerFactory KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());keyManagerFactory.init(keyStore, password.toCharArray());SSLContext sslContext SSLContext.getInstance(TLS);sslContext.init(keyManagerFactory.getKeyManagers(), null, null);HttpClient httpClient new DefaultHttpClient();SchemeRegistry schemeRegistry new SchemeRegistry();schemeRegistry.register(new Scheme(https, new SSLSocketFactory(sslContext), 443));ThreadSafeClientConnManager cm new ThreadSafeClientConnManager(httpClient.getParams(), schemeRegistry);httpClient new DefaultHttpClient(cm, httpClient.getParams());HttpGet httpGet new HttpGet(https://your-server-url.com/api/endpoint);HttpResponse response httpClient.execute(httpGet);// 处理响应...} catch (Exception e) {e.printStackTrace(); } 4. 结束 此代码是一个基本示例涉及的步骤包括加载证书、创建 KeyStore 和 TrustManager并将其应用于 OkHttpClient和原生请求的 的 SSL 配置中当然也请确保适当处理异常并根据实际情况进行调整~ 感谢 如有任何问题请随时评论or私信联系我~
http://www.laogonggong.com/news/106228.html

相关文章:

  • 苏州网站建设一条龙长沙官网seo
  • 怎样加盟网站建设thinkphp手机网站开发
  • 商丘市做网站泰安搭建公司
  • 公司的网站续费企业简介模板范文
  • 专业手机网站建设推荐方案案例网站
  • 新吴区推荐做网站电话阿坝州网站制作
  • 罗浮视窗网站建设网站支付方案的设计
  • 中山网站网站建设江门网站优化
  • 网页设计公司网站制作北海建设厅官方网站
  • 网站制作排版网app开发
  • 公司网站怎么做备案信息网络营销跟做网站有什么区别
  • 网上商城取名郑州网站优化培训
  • 湖南众诚建设网站浏览器无法打开住房和建设网站
  • 网站 特效都是用什么软件做的网站后台建设内容
  • 花生棒 做网站红桃免费观看电视剧高清斗破苍穹
  • 浙江邮电建设工程有限公司网站做网站为什么图片上传不了
  • 可以上传网站的免费空间重庆建筑工程招聘信息网
  • 网站的ftp地址是什么cms免费企业网站
  • 有哪些网站做的很好初学者做网站
  • 九江做网站公司河北邯郸地震最新消息今天
  • 怎么看网站是哪个系统做的青岛专业网站设计的公司
  • cms仿站教程怎样添加网站上百度商桥代码
  • 周到的商城网站建设有批量做基因结构的网站吗
  • 个人博客网站设计wordpress邮箱订阅
  • 河南移动官网网站建设网站开发规划方案
  • wordpress网站存放在建设网站前的市场分析包括哪些内容
  • 建筑论坛网站网站建设了
  • 网站建设 长安青岛建个网站多少钱
  • 网站建设分为那几个模块wordpress 禁止头像
  • 佛山市专注网站建设平台如何申请注册企业邮箱