sslHk
parent
b24be48dfe
commit
66d7ef4f86
@ -0,0 +1,90 @@
|
|||||||
|
package com.rehome.adminclientappmqttserver.utils;
|
||||||
|
|
||||||
|
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
||||||
|
import org.bouncycastle.openssl.PEMKeyPair;
|
||||||
|
import org.bouncycastle.openssl.PEMParser;
|
||||||
|
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
|
||||||
|
|
||||||
|
import javax.net.ssl.KeyManagerFactory;
|
||||||
|
import javax.net.ssl.SSLContext;
|
||||||
|
import javax.net.ssl.SSLSocketFactory;
|
||||||
|
import javax.net.ssl.TrustManagerFactory;
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.security.KeyPair;
|
||||||
|
import java.security.KeyStore;
|
||||||
|
import java.security.Security;
|
||||||
|
import java.security.cert.CertificateFactory;
|
||||||
|
import java.security.cert.X509Certificate;
|
||||||
|
|
||||||
|
public class MqttSSLSocketFactory {
|
||||||
|
public static SSLSocketFactory getSingleSocketFactory(InputStream caCrtFileInputStream) throws Exception {
|
||||||
|
Security.addProvider(new BouncyCastleProvider());
|
||||||
|
X509Certificate caCert = null;
|
||||||
|
|
||||||
|
BufferedInputStream bis = new BufferedInputStream(caCrtFileInputStream);
|
||||||
|
CertificateFactory cf = CertificateFactory.getInstance("X.509");
|
||||||
|
|
||||||
|
while (bis.available() > 0) {
|
||||||
|
caCert = (X509Certificate) cf.generateCertificate(bis);
|
||||||
|
}
|
||||||
|
KeyStore caKs = KeyStore.getInstance(KeyStore.getDefaultType());
|
||||||
|
caKs.load(null, null);
|
||||||
|
caKs.setCertificateEntry("cert-certificate", caCert);
|
||||||
|
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
|
||||||
|
tmf.init(caKs);
|
||||||
|
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
|
||||||
|
sslContext.init(null, tmf.getTrustManagers(), null);
|
||||||
|
return sslContext.getSocketFactory();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SSLSocketFactory getTwoDirSocketFactory(InputStream caCrtFile, InputStream crtFile, InputStream keyFile,
|
||||||
|
String password) throws Exception {
|
||||||
|
Security.addProvider(new BouncyCastleProvider());
|
||||||
|
|
||||||
|
// load CA certificate
|
||||||
|
X509Certificate caCert = null;
|
||||||
|
|
||||||
|
BufferedInputStream bis = new BufferedInputStream(caCrtFile);
|
||||||
|
CertificateFactory cf = CertificateFactory.getInstance("X.509");
|
||||||
|
|
||||||
|
while (bis.available() > 0) {
|
||||||
|
caCert = (X509Certificate) cf.generateCertificate(bis);
|
||||||
|
}
|
||||||
|
|
||||||
|
// load client certificate
|
||||||
|
bis = new BufferedInputStream(crtFile);
|
||||||
|
X509Certificate cert = null;
|
||||||
|
while (bis.available() > 0) {
|
||||||
|
cert = (X509Certificate) cf.generateCertificate(bis);
|
||||||
|
}
|
||||||
|
|
||||||
|
// load client private cert
|
||||||
|
PEMParser pemParser = new PEMParser(new InputStreamReader(keyFile));
|
||||||
|
Object object = pemParser.readObject();
|
||||||
|
JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
|
||||||
|
KeyPair key = converter.getKeyPair((PEMKeyPair) object);
|
||||||
|
|
||||||
|
KeyStore caKs = KeyStore.getInstance(KeyStore.getDefaultType());
|
||||||
|
caKs.load(null, null);
|
||||||
|
caKs.setCertificateEntry("cert-certificate", caCert);
|
||||||
|
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
|
||||||
|
tmf.init(caKs);
|
||||||
|
|
||||||
|
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
|
||||||
|
ks.load(null, null);
|
||||||
|
ks.setCertificateEntry("certificate", cert);
|
||||||
|
ks.setKeyEntry("private-cert", key.getPrivate(), password.toCharArray(),
|
||||||
|
new java.security.cert.Certificate[]{cert});
|
||||||
|
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
|
||||||
|
kmf.init(ks, password.toCharArray());
|
||||||
|
|
||||||
|
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
|
||||||
|
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
|
||||||
|
|
||||||
|
return sslContext.getSocketFactory();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
package com.rehome.adminclientappmqttserver.utils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class UUIDUtil {
|
||||||
|
public static String getUUID() {
|
||||||
|
return UUID.randomUUID().toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
@ -0,0 +1,27 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEogIBAAKCAQEApkLWaF5mqX/9Qv0PiFgvsEO9vNNzKcGjyAyLZBNQb70PgF33
|
||||||
|
i7XsOBwNzo/xdisBXmWsCOPWVM60MUIGT4v7iCNueWQlMOsYYNxV47EV3ZclZbz4
|
||||||
|
Ji5sKKczn1U1l25w5v3jNZEYcxHU6uwmtiBFCZa2SeEV0jI356qNU5Wvt9u/Io9Z
|
||||||
|
tb5tZOMa71ERejViqZtfNIg5Q3oRB7gyhyFKVKjPZI5MnfA895+7SrL4Nm4OIApm
|
||||||
|
dKM0dTV7Xz1VsRnO3IlivnmaQy7sBMv7ak8vNXCMO1qHQGKOmNrKHtQTswxOdute
|
||||||
|
5kSSzVRBE25Xrk/RyG+01mtccU2liNWMjfTEwwIDAQABAoIBAEkt9g1uL6W/jgvk
|
||||||
|
MugCWMsupd7s+y2P67TrwJbF4YutHZuUwJaf9l8kCfe3Z8JpX2rbOYOYNQiTCsD7
|
||||||
|
nKd6p7XeUovfxnbno41OrgdQNJ2aH33OVTMJD9Y88f3ZlYMXu14Qtecn/Cj52kuk
|
||||||
|
sc1MGtcDnSybg+1G6VBww0/c/MDhpHSEevJ8LZaxTOyNPvt4qVJZKtArBGnFPh81
|
||||||
|
VKiBQy6Aumm4k9gRkrVbAR0xo9DiOYE0hfga04J3EwYdI2uhGvgew2zeRVSdsN81
|
||||||
|
TN8mNJ/BTra2Yqf4bp22IhNT6G9AgfjqTb1mDfaQHkN5SABgB8TE/HubJ4wH/Jn+
|
||||||
|
ptVLR5ECgYEA0gzbolhfskVJ00eNs1ik6SKpBQwKz27OokNILfG5+BzLTK5kBYtU
|
||||||
|
jov9lSRz/PWHX+g7Do3ncdueSvHpBALaUcsxVsY1QoWcxQ8NLlZfcY1dm1Vuudzg
|
||||||
|
dy3Ccl7vKsoQBkI/an+3+ooiy/XX9pydt4/QfkmzCaAre0SuLavNWJcCgYEAyqG4
|
||||||
|
DUf41LFQTDNTTUxcg924JDk6pxO3+4Qr98CSJz+6pICkTw3fy/cKOj1wFc1RA4/0
|
||||||
|
DndiXBXnA0wnfPb2dktZ970cXofaIXMbpcteBSJC/Atqd8Mmcit+A21FTx5nI/dv
|
||||||
|
CGgmAj0j0Y7nX91+jos4l6/ihXskQQDfUYA2LrUCgYBqGOKLsxXLRyJOHPNfJqRN
|
||||||
|
uhsjmHyRYEfxQAjiZBnqUCkEN4YAIut4AQ/6WGpZ2G8jq3rBFD5WjXb8Jgrr4sEB
|
||||||
|
1Z+7U+ytCC4yfzLKOAiHo78nadS+/ulGaY+xE3C87UmAz8+WbKKyYznGSgxm3Z7w
|
||||||
|
jCzkzTco4oV0AzHzkbbsSwKBgDaOVgyVXSR+3Py3MO116s7CKmruUaFcSMPaMTBS
|
||||||
|
U8dnfCwASrzSIng6+jD2C7CDCBXqcy5V7FCYwQr9PQCDSZZN8VonO3UkJJGu+Tmp
|
||||||
|
SJYfRGOx+ydljntcxF/N0sRbji971hQwXlNp/LPWQutnqkRcrY8Blv6TSg6KWpYJ
|
||||||
|
7AylAoGAMp/nSsfpjnoYW+8KdC+iEZw66FjCg5HV11rWCUqj7gsgNOfCUhku826M
|
||||||
|
23SwZWWVQzOR5dJsmtUuzO1cXcpxKSpMdpVikB4TYFm4U1l5QZuSG+L2516IjwwJ
|
||||||
|
q96skUIZ649Tu1B5ecQLMPD0S/Hc8Guhcr31KGnisOQt/CbSA1w=
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
Binary file not shown.
Loading…
Reference in New Issue