{ "id": "104679", "key": "TIMOB-11697", "fields": { "issuetype": { "id": "5", "description": "The sub-task of the issue", "name": "Sub-task", "subtask": true }, "parent": { "id": "102034", "key": "TIMOB-11154", "fields": { "summary": "Ti API: Support SSL certificate store with Http Client", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "14162", "description": "Release 3.1.0", "name": "Release 3.1.0", "archived": true, "released": true, "releaseDate": "2013-04-16" }, { "id": "14700", "description": "2012 Sprint 25", "name": "2012 Sprint 25", "archived": true, "released": true, "releaseDate": "2012-12-17" }, { "id": "14699", "description": "2012 Sprint 25 Core", "name": "2012 Sprint 25 Core", "archived": true, "released": true, "releaseDate": "2012-12-17" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-12-04T00:39:34.000+0000", "created": "2012-11-08T00:43:25.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [ { "id": "22746", "type": { "id": "10001", "name": "Cloners", "inward": "is cloned into", "outward": "is cloned from" }, "inwardIssue": { "id": "104814", "key": "TIMOB-11728", "fields": { "summary": "iOS: Support SSL certificate store with HTTP Client", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "5", "description": "The sub-task of the issue", "name": "Sub-task", "subtask": true } } } } ], "assignee": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-09T18:16:11.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "attachment": [ { "id": "36643", "filename": "com.certificatestore-android-0.1.zip", "author": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-03-26T02:53:53.000+0000", "size": 33827, "mimeType": "application/zip" }, { "id": "33500", "filename": "sslTest.zip", "author": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-16T02:50:00.000+0000", "size": 3739730, "mimeType": "application/zip" }, { "id": "33501", "filename": "webserver.zip", "author": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-16T02:50:00.000+0000", "size": 461978, "mimeType": "application/zip" } ], "flagged": false, "summary": "Android: Support SSL certificate store with HTTP Client", "creator": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "227563", "author": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "body": "For android it will require the user be able to configure the SSL context. So we need to expose hooks in the HTTPClient for the user to specify the keyManagers and trustManagers to be used for the request. The actual parsing and loading of certificate data and implementation of the managers can be done in a module.", "updateAuthor": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2012-11-15T20:27:44.000+0000", "updated": "2012-11-15T20:27:44.000+0000" }, { "id": "227642", "author": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Testing Steps:\n\nTo test this issue, you will need to setup a local webserver that supports ssl. There is some nodejs code attached to this ticket that will act as a webserver. You will need to have node.js installed for this to work. I have node v0.8.14 installed, but a relatively recent version should work.\n\nFirst you will need to set up the web server:\n1. Unzip the webserver.zip\n2. Inside the zip you will find a server.js\n3. run the server.js: 'node server.js'\n4. when prompted for a password, just use 'password'\n5. leave the webserver running while running the app\n\nRunning the app:\n1. Import the attached project into studio\n2. Open up app.js and modify the url https://192.168.1.10:5678 You will need to change 192.168.1.10 to the IP address of your computer. You can find this info under System Preferences > Network\n3. Install the app to the device and run it. (If you are running this on device, you will need to connect to the same network as your computer)\n4. You should see a success message\n\nAdditional test cases:\nWe also want to test to make sure not specifying a certificate fails and using an invalid certificate fails.\n\n- Inside app.js, change the addCertificate() call to use 'server2.p12' instead of 'server.p12'. Run the app, and you should see an error message.\n\n- Inside app.js, comment out the line: \nclient.addTrustManager(certificateStore.getTrustManager());\n\nThis should make it so we don't use the certificate store. Run the app, and you should see an error message.", "updateAuthor": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-16T03:07:44.000+0000", "updated": "2012-11-16T03:07:44.000+0000" }, { "id": "227644", "author": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/3433 This is to expose hooks for the SSL cert module", "updateAuthor": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-16T03:12:58.000+0000", "updated": "2012-11-16T03:12:58.000+0000" }, { "id": "228695", "author": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Above PR was closed. Changes are incorporated into this PR \nhttps://github.com/appcelerator/titanium_mobile/pull/3429", "updateAuthor": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2012-11-27T20:41:00.000+0000", "updated": "2012-11-27T20:41:00.000+0000" }, { "id": "246493", "author": { "name": "fcasali", "key": "fcasali", "displayName": "Federico Casali", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified as working as expected.\n\nTiSDK 3.1.0.v20130405170202\nCLI version 3.1.0-cr\nAndroid Google Nexus One and Android emulator\n", "updateAuthor": { "name": "fcasali", "key": "fcasali", "displayName": "Federico Casali", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-04-08T20:41:16.000+0000", "updated": "2013-04-08T20:41:16.000+0000" }, { "id": "410310", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-09T18:16:11.000+0000", "updated": "2017-03-09T18:16:11.000+0000" } ], "maxResults": 6, "total": 6, "startAt": 0 } } }