Selenium TrustAllSertificatsUnivaercaly
#1
Отправлено 16 июля 2009 - 09:43
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import junit.framework.Assert;
public class sign_up extends SeleneseTestCase {
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {return null;}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {}}};
public void setUp() throws Exception {
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
}
// Now you can access an https URL without having the certificate in the truststore
try {
URL url = new URL("https:Site_url.com");
} catch (MalformedURLException e) {
}
#2
Отправлено 16 июля 2009 - 09:47
import java.security.GeneralSecurityException;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.mortbay.jetty.servlet.Default;
import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;
import java.lang.Exception;
public class TrustEverythingSSLTrustManager implements X509TrustManager {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
//No need to implement.
}
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
//No need to implement.
}
private static SSLSocketFactory socketFactory = null;
/**
* Returns an SSLSocketFactory that will trust all SSL certificates; this is suitable for passing to
* HttpsURLConnection, either to its instance method setSSLSocketFactory, or to its static method
* setDefaultSSLSocketFactory.
* @see HttpsURLConnection#setSSLSocketFactory(SSLSocketFactory)
* @see HttpsURLConnection#setDefaultSSLSocketFactory(SSLSocketFactory)
* @return SSLSocketFactory suitable for passing to HttpsUrlConnection
*/
public synchronized static SSLSocketFactory getTrustingSSLSocketFactory() {
if (socketFactory != null) return socketFactory;
TrustManager[] trustManagers = new TrustManager[] { new TrustEverythingSSLTrustManager() };
SSLContext sc;
try {
sc = SSLContext.getInstance("SSL");
sc.init(null, trustManagers, null);
} catch (GeneralSecurityException e) {
throw new RuntimeException("This is a BUG in Selenium; please report it", e);
}
socketFactory = sc.getSocketFactory();
return socketFactory;
}
/** Automatically trusts all SSL certificates in the current process; this is dangerous. You should
* probably prefer to configure individual HttpsURLConnections with trustAllSSLCertificates
* @see #trustAllSSLCertificates(HttpsURLConnection)
*/
public static void trustAllSSLCertificatesUniversally() {
getTrustingSSLSocketFactory();
HttpsURLConnection.setDefaultSSLSocketFactory(socketFactory);
}
/** Configures a single HttpsURLConnection to trust all SSL certificates.
*
* @param connection an HttpsURLConnection which will be configured to trust all certs
*/
public static void trustAllSSLCertificates(HttpsURLConnection connection) {
getTrustingSSLSocketFactory();
connection.setSSLSocketFactory(socketFactory);
}
}
#3
Отправлено 16 июля 2009 - 09:47
#4
Отправлено 16 июля 2009 - 09:52
#5
Отправлено 16 июля 2009 - 10:06
#6
Отправлено 16 июля 2009 - 10:13
#7
Отправлено 16 июля 2009 - 10:21
#8
Отправлено 16 июля 2009 - 10:34
#9
Отправлено 16 июля 2009 - 10:44
#10
Отправлено 16 июля 2009 - 10:50
Можно ссылочки на эти блоги увидеть?Не буду спорить потому что не очень силен в java. Но всеравно я думаю что это так или иначе возможно потому что такая информация ни на одном блоге
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#11
Отправлено 16 июля 2009 - 11:01
Вот еще один например
и еще
http://www.koders.co...spx?s=MatchRule
#12
Отправлено 16 июля 2009 - 11:09
Это куски кода SeleniumProxy. Да, можно заставить браузеры ходить через прокси, и настроить прокси так, чтобы это он принимал сертификаты, а не браузер.http://svn.openqa.or...eleni...117&u
Вот еще один например
и еще
http://www.koders.co...spx?s=MatchRule
Возможно, это будет кроссбраузерным решением, кстати.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#13
Отправлено 16 июля 2009 - 11:11
#14
Отправлено 16 июля 2009 - 11:23
Это куски кода SeleniumProxy. Да, можно заставить браузеры ходить через прокси, и настроить проски так, чтобы это он принимал сертификаты, а не браузер.
Возможно, это будет кроссбраузерным решением, кстати.
По идее это только для того, чтобы сам прокси мог принять любой сертификат, этот же сертификат придётся принимать и браузеру. С другой стороны RC может подменять этот сертификат, что, насколько знаю, работает не всегда. В таком случае придётся импортировать Selenium'ный CA во все браузеры, после чего пустить всё через Selenium Proxy, возможно, что заработает.
#15
Отправлено 16 июля 2009 - 11:24
Чтобы прокси принимал все сертификаты без вопросов, нужно сервер запускать с опцией -trustAllSSLCertificates
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#16
Отправлено 16 июля 2009 - 11:27
SSL certificate warnings: Selenium RC automatically attempts to spoof SSL certificates when it is enabled as a proxy. If your browser is configured correctly, you should never see SSL certificate warnings, but you may need to configure your browser to trust our dangerous “CyberVillains” SSL certificate authority.
#17
Отправлено 16 июля 2009 - 11:39
Да, это должно помочь с сертификатами, но последний раз когда я пробовал Proxy Injection Mode (пол года назад), этот режим всё ещё был крайне нестабилен. Сейчас разработчики RC пытаются полностью автоматизировать подмену сертификатов в обычном режиме RC, но вроде как всё ещё есть проблемы.В документации про Selenium Server посмотрите раздел Proxy Injection: http://seleniumhq.or...he-server-works
Чтобы прокси принимал все сертификаты без вопросов, нужно сервер запускать с опцией -trustAllSSLCertificates
#18
Отправлено 16 июля 2009 - 11:57
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных