CertStore cs = new CertStore() {
public X509Certificate[] getCertificates(String arg0) {
Logger.debug("get certificates");
try {
X509Certificate[] certs = new X509Certificate[1];
InputStream is = this.getClass().getResourceAsStream("/my.crt");
Logger.debug("inputStream: " + is);
byte[] buffer = new byte[is.available()];
is.read(buffer);
Logger.debug("cert length: " + buffer.length);
certs[0] = X509Certificate.generateCertificate(buffer, 0, buffer.length);
return certs;
} catch (Exception ex) {
Logger.error("can't open resource");
ex.printStackTrace();
return null;
}
}
};
SSLStreamConnection.setTrustedCertStore(cs);
Logger.debug("Before opening ssl connection" );
// вот здесь выдает эксэпшн Certificate was issued by an unrecognized entity
SSLStreamConnection sslscon = new SSLStreamConnection("myhostname.com", 443, connection.openInputStream(), connection.openOutputStream());
Logger.debug("trusted certstore: " + cs.getCertificates(null));
OutputStream outputStream = sslscon.openOutputStream();
writer = new OutputStreamWriter(outputStream, "UTF-8");
writer.write(data.toString());
writer.close();
outputStream.close();
Apache+SSL (ubuntu10)
Я делаю так:
-------------------- создание собственного CA, подпись серверного и клиентского ключа этим CA -----------------
cd /home/work/keystores
--- создаю свое CA---
openssl genrsa -des3 -out ca.key 2048
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
-- создаю серверный ключ, подписываю его моим CA ---
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
-- убираю пароли чтобы апач не запрашивал при рестарте ---
openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.key
sudo cp server.key /etc/apache2/ssl
sudo cp server.crt /etc/apache2/ssl
--- импортирую корневой сертификат CA в хранилище ключей ---
keytool -import -trustcacerts -alias cacert -file ca.crt -keystore keystore.jks
keytool -genkey -alias my -keyalg RSA -keystore keystore.jks -keysize 2048
--- генерирую запрос на сертификацию от хранилища ключей ---
keytool -certreq -alias my -keystore keystore.jks -file my.csr
---подписываю сертификат для хранилища ключей при помощи CA
openssl x509 -req -days 365 -in my.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out my.crt
---добавляю сертификат в хранилище ---
keytool -import -trustcacerts -alias my -file my.crt -keystore keystore.jks
------------------------------------------------------------------------------------------------------------
апач стартует нормально, виртуальный хост(myhostname.com) для защищенного соединения видит, открывает
тестирую в эмуляторе
пробовал подписать мидлет сертификатом my.crt - не подключается
также пробовал способ отсюда (http://forum.vingrad.ru/topic-302814.html),
положил в корень jar my.crt,
код следующий
Код: