You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by Matthias Huber <ma...@novatec-gmbh.de> on 2014/03/26 17:29:02 UTC

How to record HTTPS traffic of mobile apps (here iOS)

Hello alltogether, 

I'm currently doing some tests for recording test cases with iOS mobile apps in combination with jmeter v2.11. Recording HTTP traffic (either via safari or apps) is not a problem. I also managed to record HTTPS traffic via safari (added exception rules via popup) for example https://www.google.de or login into my Amazon Account. Unfortunately I cannot record apps which are using HTTPS, e.g. the App Store 

Short to my tests: My laptop is connected via LAN to the internet. The wireless connection is used as hotspot which my Iphone is connected to. When I search something in the App Store I got the following exception: 

Request: CONNECT itunes.apple.com:443 HTTP/1.1 

StackTrace: javax.net.ssl.SSLException: Received close_notify during handshake 
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) 
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886) 
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1839) 
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1940) 
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077) 
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) 
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:882) 
at sun.security.ssl.AppInputStream.read(AppInputStream.java:102) 
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) 
at java.io.BufferedInputStream.read(BufferedInputStream.java:254) 
at org.apache.jmeter.protocol.http.proxy.HttpRequestHdr.parse(HttpRequestHdr.java:117) 
at org.apache.jmeter.protocol.http.proxy.Proxy.run(Proxy.java:205) 


I had already a look at google to find a workaround. I stumbled over a description of the Charles Proxy ( http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/ ) which explains to install the certificate on the device. Therefore, I installed the JMeter certificate according to the Charles description on my IPhone. It still does not work. With Charles everything is working and I can record the traffic of apps using HTTPS. Currently I do not know why Charles is able to record the traffic and why it fails with the JMeter proxy. 

I hope someone can help me. If you need additional information, just let me know. 


Mit freundlichen Grüßen / Kind Regards 

Matthias Huber 



Consultant 

NOVA TEC // Consulting GmbH 
Dieselstrasse 18/1 // D-70771 Leinfelden-Echterdingen 






	phone: 	+49 711 22040-700 
	fax: 	+49 711 22040-899 
	mobil: 	+49 170 5682609 
	e-mail: 	

matthias .huber@novatec-gmbh.de 

	web: 	www.novatec-gmbh.de 




Sitz der Gesellschaft: Waldenbuch // Handelsregister: Stuttgart – HRB 739078 
Geschäftsführer: Hans-Dieter Brenner // Michael Schuchart // Albrecht Stäbler 





Re: How to record HTTPS traffic of mobile apps (here iOS)

Posted by sebb <se...@gmail.com>.
On 26 March 2014 16:38, sebb <se...@gmail.com> wrote:
> On 26 March 2014 16:29, Matthias Huber <ma...@novatec-gmbh.de> wrote:
>> Hello alltogether,
>>
>> I'm currently doing some tests for recording test cases with iOS mobile apps in combination with jmeter v2.11. Recording HTTP traffic (either via safari or apps) is not a problem. I also managed to record HTTPS traffic via safari (added exception rules via popup) for example https://www.google.de or login into my Amazon Account. Unfortunately I cannot record apps which are using HTTPS, e.g. the App Store
>>
>> Short to my tests: My laptop is connected via LAN to the internet. The wireless connection is used as hotspot which my Iphone is connected to. When I search something in the App Store I got the following exception:
>>
>> Request: CONNECT itunes.apple.com:443 HTTP/1.1
>>
>> StackTrace: javax.net.ssl.SSLException: Received close_notify during handshake
>> at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
>> at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886)
>> at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1839)
>> at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1940)
>> at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077)
>> at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
>> at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:882)
>> at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
>> at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
>> at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
>> at org.apache.jmeter.protocol.http.proxy.HttpRequestHdr.parse(HttpRequestHdr.java:117)
>> at org.apache.jmeter.protocol.http.proxy.Proxy.run(Proxy.java:205)
>>
>>
>> I had already a look at google to find a workaround. I stumbled over a description of the Charles Proxy ( http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/ ) which explains to install the certificate on the device. Therefore, I installed the JMeter certificate according to the Charles description on my IPhone. It still does not work. With Charles everything is working and I can record the traffic of apps using HTTPS. Currently I do not know why Charles is able to record the traffic and why it fails with the JMeter proxy.
>
> The JMeter certificate should only be installed on the host which is
> being used to run JMeter.

Sorry, that was wrong.

JMeter sends uses the private key of the same certificate to encode
the replies back to the browser or app, so it is the host running the
browser or the app that needs the certificate. In your case, the
iPhone.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
For additional commands, e-mail: user-help@jmeter.apache.org


Re: How to record HTTPS traffic of mobile apps (here iOS)

Posted by Matthias Huber <ma...@novatec-gmbh.de>.
Hello sebb, 

thanks alot for your fast response. The explanation was to short from my side. I give it another try: 

In my test environment, I am using a laptop (Linux Mint 12) which is connected via LAN with my company's network. I use the laptops wireless adapter as hotspot which my IPhone 5 (iOS 61.4) connects to. I also disable mobile data on my Iphone meaning that the IPhone has to use the WLAN in order to access the Internet. The JMeter proxy for recording runs on my laptop listening on Port 8080. I configured the WLAN connection in the IPhone to use this proxy with IP of my laptop and Port 8080. After I did not succeed with recording the traffic of the apps using HTTPS, I searched Google and found the article about Charles. I tried out Charles, the proxy is running on my laptop, and inside Charles I can see all requests/responses of mobile apps using HTTPS and they work all fine. That's why I decided to try out to install the ApacheJMeter certificate on the Iphone. Therefore I sended the certificate via Mail and opened the attachment. I read that the certificate should not be installed somewhere else but this was the only help I had found so far. 

Thanks for your upcoming responses and in case that the explanation is still not enough, I'll give it a third try ;-) 

Greetings, 
Matthias 


----- Original Message -----

From: "sebb" <se...@gmail.com> 
To: "JMeter Users List" <us...@jmeter.apache.org> 
Sent: Wednesday, March 26, 2014 5:38:23 PM 
Subject: Re: How to record HTTPS traffic of mobile apps (here iOS) 

On 26 March 2014 16:29, Matthias Huber <ma...@novatec-gmbh.de> wrote: 
> Hello alltogether, 
> 
> I'm currently doing some tests for recording test cases with iOS mobile apps in combination with jmeter v2.11. Recording HTTP traffic (either via safari or apps) is not a problem. I also managed to record HTTPS traffic via safari (added exception rules via popup) for example https://www.google.de or login into my Amazon Account. Unfortunately I cannot record apps which are using HTTPS, e.g. the App Store 
> 
> Short to my tests: My laptop is connected via LAN to the internet. The wireless connection is used as hotspot which my Iphone is connected to. When I search something in the App Store I got the following exception: 
> 
> Request: CONNECT itunes.apple.com:443 HTTP/1.1 
> 
> StackTrace: javax.net.ssl.SSLException: Received close_notify during handshake 
> at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) 
> at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886) 
> at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1839) 
> at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1940) 
> at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077) 
> at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) 
> at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:882) 
> at sun.security.ssl.AppInputStream.read(AppInputStream.java:102) 
> at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) 
> at java.io.BufferedInputStream.read(BufferedInputStream.java:254) 
> at org.apache.jmeter.protocol.http.proxy.HttpRequestHdr.parse(HttpRequestHdr.java:117) 
> at org.apache.jmeter.protocol.http.proxy.Proxy.run(Proxy.java:205) 
> 
> 
> I had already a look at google to find a workaround. I stumbled over a description of the Charles Proxy ( http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/ ) which explains to install the certificate on the device. Therefore, I installed the JMeter certificate according to the Charles description on my IPhone. It still does not work. With Charles everything is working and I can record the traffic of apps using HTTPS. Currently I do not know why Charles is able to record the traffic and why it fails with the JMeter proxy. 

The JMeter certificate should only be installed on the host which is 
being used to run JMeter. 

It's not clear on which host(s) you are running Charles and/or JMeter. 

> I hope someone can help me. If you need additional information, just let me know. 
> 
> 
> Mit freundlichen Grüßen / Kind Regards 
> 
> Matthias Huber 
> 
> 
> 
> Consultant 
> 
> NOVA TEC // Consulting GmbH 
> Dieselstrasse 18/1 // D-70771 Leinfelden-Echterdingen 
> 
> 
> 
> 
> 
> 
> phone: +49 711 22040-700 
> fax: +49 711 22040-899 
> mobil: +49 170 5682609 
> e-mail: 
> 
> matthias .huber@novatec-gmbh.de 
> 
> web: www.novatec-gmbh.de 
> 
> 
> 
> 
> Sitz der Gesellschaft: Waldenbuch // Handelsregister: Stuttgart - HRB 739078 
> Geschäftsführer: Hans-Dieter Brenner // Michael Schuchart // Albrecht Stäbler 
> 
> 
> 
> 

--------------------------------------------------------------------- 
To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org 
For additional commands, e-mail: user-help@jmeter.apache.org 



Re: How to record HTTPS traffic of mobile apps (here iOS)

Posted by sebb <se...@gmail.com>.
On 26 March 2014 16:29, Matthias Huber <ma...@novatec-gmbh.de> wrote:
> Hello alltogether,
>
> I'm currently doing some tests for recording test cases with iOS mobile apps in combination with jmeter v2.11. Recording HTTP traffic (either via safari or apps) is not a problem. I also managed to record HTTPS traffic via safari (added exception rules via popup) for example https://www.google.de or login into my Amazon Account. Unfortunately I cannot record apps which are using HTTPS, e.g. the App Store
>
> Short to my tests: My laptop is connected via LAN to the internet. The wireless connection is used as hotspot which my Iphone is connected to. When I search something in the App Store I got the following exception:
>
> Request: CONNECT itunes.apple.com:443 HTTP/1.1
>
> StackTrace: javax.net.ssl.SSLException: Received close_notify during handshake
> at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
> at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886)
> at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1839)
> at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1940)
> at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077)
> at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
> at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:882)
> at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
> at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
> at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
> at org.apache.jmeter.protocol.http.proxy.HttpRequestHdr.parse(HttpRequestHdr.java:117)
> at org.apache.jmeter.protocol.http.proxy.Proxy.run(Proxy.java:205)
>
>
> I had already a look at google to find a workaround. I stumbled over a description of the Charles Proxy ( http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/ ) which explains to install the certificate on the device. Therefore, I installed the JMeter certificate according to the Charles description on my IPhone. It still does not work. With Charles everything is working and I can record the traffic of apps using HTTPS. Currently I do not know why Charles is able to record the traffic and why it fails with the JMeter proxy.

The JMeter certificate should only be installed on the host which is
being used to run JMeter.

It's not clear on which host(s) you are running Charles and/or JMeter.

> I hope someone can help me. If you need additional information, just let me know.
>
>
> Mit freundlichen Grüßen / Kind Regards
>
> Matthias Huber
>
>
>
> Consultant
>
> NOVA TEC // Consulting GmbH
> Dieselstrasse 18/1 // D-70771 Leinfelden-Echterdingen
>
>
>
>
>
>
>         phone:  +49 711 22040-700
>         fax:    +49 711 22040-899
>         mobil:  +49 170 5682609
>         e-mail:
>
> matthias .huber@novatec-gmbh.de
>
>         web:    www.novatec-gmbh.de
>
>
>
>
> Sitz der Gesellschaft: Waldenbuch // Handelsregister: Stuttgart - HRB 739078
> Geschäftsführer: Hans-Dieter Brenner // Michael Schuchart // Albrecht Stäbler
>
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
For additional commands, e-mail: user-help@jmeter.apache.org