SSL安全连接

tigase版本:8.1.2

默认tigase在certs目录下有tigase自签证书,参考:Server Certificates

备份tigase原certs目录(里面的域名证书,如ubuntu.pem是使用开源ca创建的,参考上面的文章),然后把我们自定义生成的服务证书(pem格式,包括证书和私钥内容)放置到certs目录,然后客户端使用服务端的crt证书(不包含私钥)即可。

不用ca签,使用自己的key来签(虚拟机:192.168.43.23)

输入密码并记住
openssl req -nodes -new -newkey rsa:2048 -keyout tigase_certs/tigase8.key -out tigase_certs/tigase8.csr

附加用途,添加 tigase_certs/ubuntu.ext文件

keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName
​
[ SubjectAlternativeName ]
IP.1=192.168.43.23
IP.2=192.168.43.24
DNS.1=ubuntu
DNS.2=ubuntu24

生成证书

openssl x509 -req -days 365 -in tigase_certs/tigase8.csr -signkey tigase_certs/tigase8.key -out tigase_certs/tigase8.crt -extfile tigase_certs/tigase8.ext

新建一个tigase8.pem文件,将上面的crt文件内容拷贝进去,再把key文件内容拷贝进去,大致内容如下:

-----BEGIN CERTIFICATE-----
MIIDhDCCAmwCCQCqYO2d0SnjmjANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC
...
WZQERoZS5K4ZFQhHcfrBK8ypaBFgmtNCaHIkQEHO/A7Rh/zAi5ZrPOfHoVnSgCBx
CmUEQn0rvtnKtYMTYN8gXrGlQ3I0HAOFpcD/qChnJosDr0nnY/x4Ng==
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCx9d5Qw8N9kJvk
...
X6M+/Y4fSD4FbnYZSLpyL4o7EkvyafoZZGbWR0ADKcwOw4lJ1sXgR4Wfz8yHe+Mj
5oUd2r6EAT0Ql/OZBiqloiRt
-----END PRIVATE KEY-----

生成客户端需要的keystore文件

密码
openssl pkcs12 -export -in tigase_certs/tigase8.crt -inkey tigase_certs/tigase8.key -out tigase_certs/tigase8.p12
​
(java平台支持jks)
keytool -importkeystore -v  -srckeystore tigase_certs/tigase8.p12 -srcstoretype pkcs12 -srcstorepass 你的密码 -destkeystore tigase_certs/tigase8.keystore -deststoretype jks -deststorepass 你的密码
​
​
安卓平台支持bks bcprov-ext-jdk15on-157.jar下载地址
https://mvnrepository.com/artifact/org.bouncycastle/bcprov-ext-jdk15on/1.57
​
密码
keytool -importkeystore -srckeystore tigase_certs/tigase8.p12 -srcstoretype pkcs12 -destkeystore tigase_certs/tigase8.bks -deststoretype bks -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath tigase_certs/bcprov-ext-jdk15on-1.57.jar

将tigase8.pem拷贝到/home/kangming/tigase-server-8.1.2-b10915/certs/目录,将ubuntu.keystore拷贝到代码工程。重启tigase(正确加载了ubuntu.pem),然后使用客户端进行连接测试。

通过上面的操作,已经准备好了服务端所需的证书(tigase8.pem,包含自签证书和私钥)和Java端的证书,安卓端的证书。下面就可以使用证书进行安全连接了。注意服务端的证书,tigase8.pem这个名字需要根据你当前使用的domain来命名,比如说我当前当前的tigase使用的domain是ubuntu,那么需要把tigase8.pem改名为ubuntu.pem放置到tigase根目录的certs目录下。

SSL安全连接代码实现

代码如下

package com.nufront.xmpp.client.conn;import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
import java.security.KeyStore;
import java.security.cert.X509Certificate;public class XMPPSSLTest {static {}public static void main(String[] args) {try {SSLContext ctx = SSLContext.getInstance("SSL");TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");KeyStore tks = KeyStore.getInstance("JKS");tks.load(XMPPSSLTest.class.getResourceAsStream("/tigase8.keystore"), "你的密码".toCharArray());tmf.init(tks);ctx.init(null, tmf.getTrustManagers(), null);XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder().setHost("ubuntu").setXmppDomain("ubuntu").setPort(5222).setSslContextFactory(() -> ctx).setSecurityMode(ConnectionConfiguration.SecurityMode.required).setResource("Smack")//信任自签证书.setCustomX509TrustManager(new X509TrustManager() {@Overridepublic java.security.cert.X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];}@Overridepublic void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}@Overridepublic void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}}).build();XMPPTCPConnection connection = new XMPPTCPConnection(config);connection.connect();try {connection.login("admin@192.168.31.61", "123456");System.out.println("登陆成功");} catch (Exception e) {System.out.println("登录失败");e.printStackTrace();}} catch (Exception e) {e.printStackTrace();}}
}

Tigase8 SSL安全连接配置与代码实现相关推荐

  1. MySQL配置SSL加密连接

    环境: OS:centos7 MySQL: 5.7.33 一.MySQL开启ssl连接支持 查看是否开启 登录MySQL,运行如下命令: SHOW VARIABLES LIKE '%ssl%'; 如下 ...

  2. php连接数据库非明文,MySQL 数据库配置 SSL 安全连接

    当使用非加密方式连接MySQL数据库时,在网络中传输的所有信息都是明文的,可以被网络中所有人截取,敏感信息可能被泄露.在传送敏感信息(如密码)时,可以采用SSL连接的方式. 配置MySQL服务端支持S ...

  3. Kettle配置MySQL的SSL加密连接

    环境: os: windows kettle: 8.2.0.0-342 前提 MySQL已配置ssl加密连接,详见MySQL配置SSL加密连接 kettle的安装目录lib中已添加正确的MySQL连接 ...

  4. MySQL的 SSL 连接配置

    MySQL的 SSL 连接配置 1.#创建 CA 私钥和 CA 证书 /etc/mysqlCert 生成一个 CA 私钥 openssl genrsa 2048 > ca-key.pem 生成一 ...

  5. mysql ssl 连接配置与Java连接配置全教程

    目录 开篇 开发环境 正文 安装OpenSSL 开启远程连接支持 查看是否支持SSL 创建SSL证书和私钥 创建存放证书和私钥的目录 生成证书和私钥 mysql的SSL开启与证书配置 本地ssl登陆 ...

  6. 记录k8s下配置ssl安全连接版rabbitmq

    因为有数据接入,公司要求启动ssl安全连接的方式把rabbitmq部署进k8s集群中. 首先,用CMF-AMQP-Configuration.git生成了证书及秘钥文件 接下来编写yaml文件,值得注 ...

  7. MongoClient添加连接配置信息

    在MongoClient添加连接配置信息主要是将配置信息添加到url来实现的 MongoClient的都有哪些配置 ,在MongoClients的create方法中有这样一个方法,方法传的是mongo ...

  8. Java通过SSL方式连接MongoDB

    环境说明 MongoDB版本 MongoDB 3.4 docker容器 pom.xml <dependency><groupId>org.mongodb</groupId ...

  9. vscode安装本地服务器_VS Code安装和远程服务器连接配置

    简介 Visual Studio Code是一个轻量且强大的代码编辑器,支持Windows,OS X和Linux.内置JavaScript.TypeScript和Node.js支持,而且拥有丰富的插件 ...

  10. HarmonyOS之深入解析编译构建的配置和代码混淆

    一.概述 编译构建是将 HarmonyOS 应用的源代码.资源.第三方库等打包生成 HAP 或者 APP 的过程.其中,HAP 可以直接运行在真机设备或者模拟器中:APP 则是用于应用上架到华为应用市 ...

最新文章

  1. 中国首个量子计算机诞生 中科院、阿里巴巴共同研发
  2. PHP静态方法和属性
  3. 使用双亲指针表示法存储一棵树,可以方便解决下列哪个应用问题( )
  4. dataframe两列相乘构造新特征
  5. centos mysql导出数据库命令_在centos(linux)下用命令导出mysql数据库数据
  6. Spring 入门程序
  7. MapReduce 工作原理
  8. python 简单检索器_python实现文件搜索工具(简易版)
  9. Java基础 main 参数String[] args的用法
  10. 使用Swift触摸任意位置以关闭iOS键盘
  11. 微信android分身,安卓手机微信分身怎么用?微信分身版制作教程
  12. 计算机网络七层结构与功能,网络七层结构介绍
  13. ps裁剪和裁切的区别_ps里裁剪和裁切有什么不一样啊?
  14. 短距离无线传输-WIFI
  15. 爬取天眼查数据 附代码
  16. win7无法自动检测修复计算机,无法启动,启动修复正在检查系统问题
  17. AD7606调试过程与源码
  18. 计算机英语的词汇量,英语词汇量多少才够用
  19. Oracle开发实战学习
  20. 怎么让笔记本合上后显示屏不灭

热门文章

  1. jni--‘jni_internal.cc:616] JNI FatalError called,RegisterNatives failed,导致system_server crash
  2. laravel admin里百度编辑器自定义路径和文件名
  3. 锁仓怎么解_[期货知识]期货锁仓后怎么解锁?期货锁仓解锁技巧介绍 - 南方财富网...
  4. 中国护照可以免签的10个旅游天堂国家(地区)
  5. 像素 厘米 英寸 换算
  6. 【转】深度技术分析“为什么ios比android流畅”
  7. Apple Silicon (mac m1 pro) 完整配置CS285 (brew, miniforge, mujoco)
  8. 单片机驱动为什么要设置为低电平有效?
  9. 永中office linux卸载,ubuntu下完全彻底删除永中office的方法
  10. 大猫谈JNCIE实验考试备战