Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Apache2 +SSL


Автор: GhostMasterNet 23.4.2011, 01:06
Помогите настроить ssl-соединение в javaME с сервером apache(2). (UBUNTU 10)

Я делаю так:

-------------------- создание собственного 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, 

код следующий 
Код

            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();



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)