{"id":13561730,"url":"https://github.com/gebi/sslpoke","last_synced_at":"2026-01-20T06:09:47.250Z","repository":{"id":66803476,"uuid":"232900120","full_name":"gebi/sslpoke","owner":"gebi","description":"Tool to test SSL connections from within the java VM (with http proxy support)","archived":false,"fork":false,"pushed_at":"2023-10-18T17:42:09.000Z","size":12,"stargazers_count":30,"open_issues_count":0,"forks_count":18,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-04T13:37:58.276Z","etag":null,"topics":["certificates","java","keystores","ops","ops-infra","ssl","tls"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gebi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-01-09T20:34:53.000Z","updated_at":"2024-10-24T17:21:52.000Z","dependencies_parsed_at":"2024-01-14T03:39:47.018Z","dependency_job_id":"2dbda327-23ef-4352-a8db-0a65ff258ce5","html_url":"https://github.com/gebi/sslpoke","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gebi%2Fsslpoke","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gebi%2Fsslpoke/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gebi%2Fsslpoke/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gebi%2Fsslpoke/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gebi","download_url":"https://codeload.github.com/gebi/sslpoke/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247046951,"owners_count":20874746,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["certificates","java","keystores","ops","ops-infra","ssl","tls"],"created_at":"2024-08-01T13:01:00.460Z","updated_at":"2026-01-20T06:09:47.244Z","avatar_url":"https://github.com/gebi.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"# sslpoke\n\nTool to test SSL connections from within the java VM, including HTTP proxy support, on java application servers.\n\nI got the initial version of this tool from: https://confluence.atlassian.com/download/attachments/117455/SSLPoke.java\n\nFixed it up, added features and use it mostly to test/debug/validate certificate issues in java based deployments.\n\nIf you need any features feel free to add them and send pull requests.\n\n## Build\n\n```\n% make\njavac SSLPoke.java\n```\n\n## Usage\n\nNormal usage with successfull response would be:\n```\n% java SSLPoke google.com 443\nSuccessfully connected\n```\n\nUsage with connection via http proxy would be (http/1.1 CONNECT is used to tunnel the data):\n```\n% java -Dhttps.proxyHost=your.proxy.host -Dhttps.proxyPort=8080 SSLPoke google.com 443\nUsing proxy: your.proxy.host:8080\nSuccessfully connected\n```\n\nUsage with special trustStore file set:\n```\n% java -Djavax.net.ssl.trustStore=your_special_keystore SSLPoke google.com 443\nSuccessfully connected\n```\n\n## Errors seen from sslpoke\n\nUsual failure in corporate environments where you forgot to use the proxy\n(in which case just abort the tool with ctrl+c if you don't want to wait)\n*(sslpoke exists with error = 1)*\n```\n% java SSLPoke google.com 443\n\u003chung, and after a long time\u003e\njava.net.ConnectException: Connection timed out (Connection timed out)\n        at java.net.PlainSocketImpl.socketConnect(Native Method)\n        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)\n        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)\n        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)\n        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)\n        at java.net.Socket.connect(Socket.java:607)\n        at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:666)\n        at sun.security.ssl.SSLSocketImpl.\u003cinit\u003e(SSLSocketImpl.java:426)\n        at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:88)\n        at SSLPoke.main(SSLPoke.java:41)\n```\n\nCertificate error *(sslpoke exists with error = 1)*\n```\n% java SSLPoke bad.cert.host 443\njavax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n        at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)\n        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)\n        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316)\n        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310)\n        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1639)\n        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:223)\n        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)\n        at sun.security.ssl.Handshaker.process_record(Handshaker.java:965)\n        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)\n        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)\n        at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:750)\n        at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123)\n        at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:138)\n        at SSLPoke.main(SSLPoke.java:53)\nCaused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)\n        at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)\n        at sun.security.validator.Validator.validate(Validator.java:262)\n        at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:330)\n        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:237)\n        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132)\n        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1621)\n        ... 9 more\nCaused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n        at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)\n        at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)\n        at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)\n        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)\n        ... 15 more\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgebi%2Fsslpoke","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgebi%2Fsslpoke","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgebi%2Fsslpoke/lists"}