{"id":21768200,"url":"https://github.com/below/atstest","last_synced_at":"2025-03-21T05:44:00.115Z","repository":{"id":34151842,"uuid":"37990371","full_name":"below/ATStest","owner":"below","description":"A script to check what needs to be done for talk to a host in iOS 9","archived":false,"fork":false,"pushed_at":"2015-06-25T07:56:36.000Z","size":134,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-26T02:44:18.903Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/below.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}},"created_at":"2015-06-24T14:41:36.000Z","updated_at":"2015-06-24T14:53:55.000Z","dependencies_parsed_at":"2022-09-02T08:02:16.127Z","dependency_job_id":null,"html_url":"https://github.com/below/ATStest","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/below%2FATStest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/below%2FATStest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/below%2FATStest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/below%2FATStest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/below","download_url":"https://codeload.github.com/below/ATStest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244745720,"owners_count":20503048,"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":[],"created_at":"2024-11-26T13:34:09.410Z","updated_at":"2025-03-21T05:44:00.097Z","avatar_url":"https://github.com/below.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ATStest\nA script to check what needs to be done for talking to a host in iOS 9. \n\n## WARNING \n\nCurrently this script has some heavy dependencies, which may cause it to be useless. Among these are the assumption, that your `nmap` is linked against a version of openssl that supports TLS 1.2.\nAlso, OpenSSL CLI tools need to be available.\n\nWe are trying to remove these dependencies\n\nThis is work in progress, you are more than welcome to contribute!\n\nThe idea of this script is to check the requirements for App Transport Security in iOS 9, as outlined in the [App Transport Security Technote](https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html#//apple_ref/doc/uid/TP40016240-CH1-SW3 \"App Transport Security Technote\") \n\nThe requirements are:\n\n1.\tTLS requires at least version 1.2.\n2.\tConnection ciphers are limited to those that provide forward secrecy (see below for the list of ciphers.)\n3.\tThe service requires a certificate using at least a SHA256 fingerprint with either a 2048 bit or greater RSA key, or a 256bit or greater Elliptic-Curve (ECC) key.\n4.\tInvalid certificates result in a hard failure and no connection.\n\nCurrently, the script tests for the ciphers (item 2) and the certificate fields in item 3.\n\nIf you add checks for the other requirements, and hint of \"what to do\" is a nice touch\n\n\n## Usage\n```\n$ ruby atstest.rb --help\nUsage: atstest hostname [OPTIONS]\n\nOptions\n    -p, --port PORT                  TCP port. Default 443\n    -s, --openssl PATH               Full path to the OpenSSL binary.\n    -n, --nmap PATH                  Full path to the nmap binary.\n    -v, --verbose                    Display more stuff.\n    -q, --quiet                      Suppress all output. Overrides verbose output!\n\nCommon options:\n    -h, --help                       Show this message\n```\n\n## Sample outputs\n```\n$ ruby atstest.rb -v api.facebook.com\nFetching certificate from api.facebook.com:443... done.\nParsing certificate... done.\nChecking ciphers for api.facebook.com:443... Ciphers OK!\nChecking Key and Algorithm... RSA Public Key with 2048 bits OK!\nChecking Signature Algorithm... Signature hash sha1WithRSAEncryption too short.\n```\n\n```\n$ ruby atstest.rb -v api.centerdevice.de\nFetching certificate from api.centerdevice.de:443... done.\nParsing certificate... done.\nChecking ciphers for api.centerdevice.de:443... Ciphers OK!\nChecking Key and Algorithm... RSA Public Key with 2048 bits OK!\nChecking Signature Algorithm... Signature algorithm sha256WithRSAEncryption OK!\n```\n\nAlexander von Below, Alex@vonBelow.Com 2015\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbelow%2Fatstest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbelow%2Fatstest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbelow%2Fatstest/lists"}