{"id":19929082,"url":"https://github.com/thescriptguy/download-certificates","last_synced_at":"2025-08-02T20:32:51.862Z","repository":{"id":247021698,"uuid":"823447300","full_name":"TheScriptGuy/download-certificates","owner":"TheScriptGuy","description":"A multithreaded program to download the certificates from entries in a file.","archived":false,"fork":false,"pushed_at":"2024-07-06T05:03:55.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-01T11:18:57.288Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheScriptGuy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-03T04:03:28.000Z","updated_at":"2024-07-06T05:02:52.000Z","dependencies_parsed_at":"2024-07-06T06:03:29.867Z","dependency_job_id":null,"html_url":"https://github.com/TheScriptGuy/download-certificates","commit_stats":null,"previous_names":["thescriptguy/download-certificates"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/TheScriptGuy/download-certificates","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheScriptGuy%2Fdownload-certificates","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheScriptGuy%2Fdownload-certificates/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheScriptGuy%2Fdownload-certificates/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheScriptGuy%2Fdownload-certificates/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheScriptGuy","download_url":"https://codeload.github.com/TheScriptGuy/download-certificates/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheScriptGuy%2Fdownload-certificates/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268448362,"owners_count":24252019,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-12T22:41:50.381Z","updated_at":"2025-08-02T20:32:51.838Z","avatar_url":"https://github.com/TheScriptGuy.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔒 SSL Certificate Downloader\n\nA multi-threaded SSL certificate downloader that allows you to retrieve and save SSL certificates from multiple hosts.\n\n## 📋 Table of Contents\n\n- [Features](#features)\n- [Requirements](#requirements)\n- [Required Libraries](#required-libraries)\n- [Compilation](#compilation)\n- [Usage](#usage)\n- [Arguments](#arguments)\n- [Examples](#examples)\n- [Contributing](#contributing)\n- [License](#license)\n\n## ✨ \u003ca name=\"features\"\u003e\u003c/a\u003eFeatures\n\n- 🚀 Multi-threaded certificate downloading\n- 💾 Save certificates with SHA256 hash filenames\n- ⏱️ Configurable connection timeout\n- 🔄 Optional overwrite of existing certificates\n- 🕰️ Customizable delay between requests\n\n## 🛠️ \u003ca name=\"requirements\"\u003e\u003c/a\u003eRequirements\n\n- GCC compiler\n- OpenSSL development libraries\n- POSIX-compliant system\n\n## 📚 \u003ca name=\"required-libraries\"\u003e\u003c/a\u003eRequired Libraries\n\nBefore compiling, ensure you have the following libraries installed on your system:\n\n- 🔐 OpenSSL: For SSL/TLS support\n- 🧵 pthreads: For multi-threading capabilities\n\nThese libraries are typically available in most standard development environments. If you encounter any issues during compilation, make sure these libraries and their development files are properly installed on your system.\n\n## 🔨 \u003ca name=\"compilation\"\u003e\u003c/a\u003eCompilation\n\n1. Clone the repository:\n```\ngit clone https://github.com/TheScriptGuy/certificate-downloader.git\ncd ssl-certificate-downloader\n```\n\n2. Compile the program:\nMake options\n```\n$ make help\nAvailable targets:\n  all       : Build the default target (download_cert)\n  full      : Build with all libraries statically linked\n  clean     : Remove all built and intermediate files\n  help      : Display this help message\n\nCompiler flags:\n  CFLAGS    : -Wall -Wextra -Iinclude -pthread\n  LDFLAGS   : -lssl -lcrypto\n\nTo use a specific compiler, set CC. For example:\n  make CC=clang\n\nTo add extra CFLAGS or LDFLAGS, use '+=' For example:\n  make CFLAGS+=-DDEBUG LDFLAGS+=-L/usr/local/lib\n```\n\nTo build the binary with the libraries `dynamically` linked, use:\n```\nmake all\n```\n\nTo build the binary with the libraries `statically` linked, use:\n```\nmake full\n```\n\nThis will create an executable named `download_cert`.\n\n## 🚀 \u003ca name=\"usage\"\u003e\u003c/a\u003eUsage\n\nBasic usage:\n```\n./download_cert -if \u003cinput_file\u003e -od \u003coutput_directory\u003e [OPTIONS]\n```\n\n## 🎛️ \u003ca name=\"arguments\"\u003e\u003c/a\u003eArguments\n\n| Argument | Description | Required |\n|----------|-------------|----------|\n| `-if \u003cinput_file\u003e` | Input file containing hostnames and ports | ✅ Yes |\n| `-od \u003coutput_directory\u003e` | Directory to save downloaded certificates | ✅ Yes |\n| `-delay \u003cseconds\u003e` | Delay between each worker's request (default: 0) | ❌ No |\n| `-workers \u003cnumber\u003e` | Number of worker threads (default: 1) | ❌ No |\n| `-timeout \u003cseconds\u003e` | Connection timeout in seconds (default: 3) | ❌ No |\n| `-overwrite` | Allow overwriting of existing certificate files | ❌ No |\n\n## 📝 \u003ca name=\"examples\"\u003e\u003c/a\u003eExamples\n\n1. Basic usage with default settings:\n```\n./download_cert -if hosts.txt -od /path/to/certs\n```\n\n2. Use 5 worker threads with a 2-second delay between requests:\n```\n./download_cert -if hosts.txt -od /path/to/certs -workers 5 -delay 2\n```\n\n3. Set a 10-second connection timeout and allow overwriting:\n```\n./download_cert -if hosts.txt -od /path/to/certs -timeout 10 -overwrite\n```\n\n4. Combine multiple options:\n```\n./download_cert -if hosts.txt -od /path/to/certs -workers 3 -delay 1 -timeout 5 -overwrite\n```\n\n## 🤝 \u003ca name=\"contributing\"\u003e\u003c/a\u003eContributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## 📄 \u003ca name=\"license\"\u003e\u003c/a\u003eLicense\n\nThis project/software is licensed for Personal Use only - see the [LICENSE](https://github.com/TheScriptGuy/download-certificates/blob/main/LICENSE.md) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthescriptguy%2Fdownload-certificates","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthescriptguy%2Fdownload-certificates","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthescriptguy%2Fdownload-certificates/lists"}