srvrco/getssl

GitHub: srvrco/getssl

一款基于纯 Bash 编写的 Let's Encrypt 客户端,专注于通过 SSH/SFTP 远程自动化申请与部署 SSL 证书。

Stars: 2216 | Forks: 386

# getssl ![Run all tests on Pebble](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/a58db51951135954.svg) ![shellcheck](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/0704a4c826135955.svg) 从 letsencrypt.org ACME 服务器获取 SSL 证书。适合 在远程服务器上自动化该流程。 ## 目录 - [v2.43 升级故障](#upgrade-broken-in-v243) - [功能特性](#features) - [概述](#overview) - [快速入门指南](#quick-start-guide) - [手动安装](#manual-installation) - [入门](#getting-started) - [包含更多示例的详细入门指南](#detailed-guide-to-getting-started-with-more-examples) - [通配符证书](#wildcard-certificates) - [ISPConfig](#ispconfig) - [自动化更新](#automating-updates) - [结构](#structure) - [自定义配置模板](#custom-template-for-configuration) - [服务器类型](#server-types) - [吊销证书](#revoke-a-certificate) - [椭圆曲线密钥](#elliptic-curve-keys) - [首选链](#preferred-chain) - [在证书链中包含根证书](#include-root-certificate-in-full-chain) - [Windows Server 和 IIS 支持](#windows-server-and-iis-support) - [将 getssl 构建为 RPM 包 (Redhat/CentOS/SuSe/Oracle/AWS)](#building-as-an-rpm-package) - [将 getssl 构建为 Debian 包 (Debian/Ubuntu)](#building-as-a-debian-package) - [问题 / 故障 / 帮助](#issues--problems--help) ## v2.43 升级故障 v2.43 中的自动升级功能因 URL 错误而失效。如果您安装了此版本,则需要使用以下命令手动升级: ```curl --silent --user-agent getssl/manual https://raw.githubusercontent.com/srvrco/getssl/latest/getssl --output getssl``` ## 功能特性 * **Bash** - 几乎可以在所有 unix 机器上运行,包括 BSD、大多数 Linux 发行版、macOS。 * **获取远程服务器的证书** - 用于验证域名所有权的 token, 以及证书本身可以自动复制到远程服务器(通过 ssh、sftp 或 ftp 传输 token)。脚本不需要在服务器本身运行。如果您 没有权限在服务器本身运行此类脚本,例如 如果是共享服务器,这将非常有用。 * **作为每日 cron 运行** - 这样证书将在需要时自动 更新。 * **自动证书续期** * **检查证书是否正确加载** - 安装 新证书后,它将测试指定的端口(参见 [服务器类型](#server-types) 以获取选项),以确保证书 实际上被正确使用。 * **自动更新** - 如果需要,脚本可以自动更新自身 以修复错误等。 * **高度可配置** - 通过为 每个证书设置一个简单的配置文件,可以根据您的 需求进行精确配置,无论是简单的单域名还是 同一证书涵盖多台服务器上的多个域名。 * **支持 http 和 dns 挑战** - 完整的 ACME 实现 * **简单易用** * **详细的调试信息** - 虽然不应该需要,但可以提供详细的 调试信息。 * **重载服务** - 获取新证书后,相关的 服务(例如 apache/nginx/postfix)可以被重载。 * **ACME v1 和 V2** - 同时支持 ACME 版本 1 和 2(注意 ACMEv1 已弃用,客户端将自动使用 v2) ## 概述 GetSSL 是用标准 bash 编写的(因此它可以在服务器、 台式机甚至 virtualbox 上运行),并将检查和 证书添加到远程服务器(前提是您拥有通过 ssh 密钥、 sftp 或 ftp 访问远程服务器的权限)。 ``` getssl ver. 2.36 Obtain SSL certificates from the letsencrypt.org ACME server Usage: getssl [-h|--help] [-d|--debug] [-c|--create] [-f|--force] [-a|--all] [-q|--quiet] [-Q|--mute] [-u|--upgrade] [-X|--experimental tag] [-U|--nocheck] [-r|--revoke cert key] [-w working_dir] [--preferred-chain chain] domain Options: -a, --all Check all certificates -d, --debug Output debug information -c, --create Create default config files -f, --force Force renewal of cert (overrides expiry checks) -h, --help Display this help message and exit -i, --install Install certificates and reload service -q, --quiet Quiet mode (only outputs on error, success of new cert, or getssl was upgraded) -Q, --mute Like -q, but also mute notification about successful upgrade -r, --revoke "cert" "key" [CA_server] Revoke a certificate (the cert and key are required) -u, --upgrade Upgrade getssl if a more recent version is available - can be used with or without domain(s) -X --experimental tag Allow upgrade to a specified version of getssl -U, --nocheck Do not check if a more recent version is available -v --version Display current version of getssl -w working_dir "Working directory" --preferred-chain "chain" Use an alternate chain for the certificate ``` ## 快速入门指南 您可以从本项目的 [发布页面](https://github.com/jeffmerkey/getssl/releases) 下载预编译的 RPM 包和 Debian (DEB) 包,或者您可以手动从 git 源代码构建并安装程序。 如果您想从 git 源代码手动安装程序,而不是使用预编译的 RPM 和 DEB 包,或者如果您的目标平台不支持 Linux RPM 或 DEB 包,请跳转到 [手动安装](#manual-installation) 部分以获取手动安装 getssl 程序的说明。 提供的包分为二进制版本和源代码版本,可以直接 下载安装或重新构建。包类型包括 Red Hat 包管理器 (RPM) 包和 Debian (DEB) 包用于二进制安装,以及 源代码 RPM 包 (SRPMS) 和 Debbuild SDEB 包用于源代码安装。 每个版本的 RPM 和 DEB 包都包含一个特定于二进制架构的包 以及一个源代码包,后者可以下载并构建/重新构建,其中包含源代码。 例如,v2.49 版本在发布部分包含以下包: ### **基于 RPM 的包 (RedHat, CentOS, SuSe, Oracle Linux, AWS Linux)** - [getssl-2.49-1.src.rpm](https://github.com/srvrco/getssl/releases/download/2.49/getssl-2.49-1.src.rpm) (源代码) - [getssl-2.49-1.noarch.rpm](https://github.com/srvrco/getssl/releases/download/2.49/getssl-2.49-1.noarch.rpm) (二进制) ### **基于 Debian 的包** - [getssl_2.49-1_all.deb](https://github.com/srvrco/getssl/releases/download/v2.49/getssl_2.49-1_all.deb) (二进制) ### **安装二进制包** 使用 rpm 包管理器为 RedHat、CentOS、SuSe、Oracle Linux 或 AWS Linux 发行版安装二进制包: ``` rpm -i getssl-2.49-1.noarch.rpm ``` 卸载 RPM 二进制包: ``` rpm -e getssl ``` 使用 Debian dpkg 包管理器为 Debian 和 Ubuntu Linux 发行版安装二进制包: ``` dpkg -i getssl_2.49-1_all.deb ``` 卸载 Debian dpkg 二进制包: ``` dpkg -r getssl ``` ### **安装源代码包** 使用 rpm 包管理器为 RedHat、CentOS、SuSe、Oracle Linux 或 AWS Linux 发行版安装源代码包: ``` rpm -i getssl-2.48-1.src.rpm ``` *(注意:对于 RedHat、CentOS、Oracle Linux 和 AWS Linux 平台,rpm 将源代码文件安装在 /root/rpmbuild/ 作为顶级目录。SuSe 平台将源代码文件安装在 /usr/src/packages/)* 使用 Debbuild 包工具为 Debian 或 Ubuntu Linux 发行版安装源代码包: ``` debbuild -i getssl-2.49-1.sdeb ``` *(注意:Debbuild 将源代码文件安装在 /root/debbuild/ 作为顶级目录)* 值得注意的是,SDEB 包实际上只是重命名为 .sdeb 文件扩展名的 tar.gz 归档文件,其文件组织为 SPECS 和 SOURCES 目录树结构。因此,也可以使用 **tar -xvf 命令**解压并安装 SDEB,或使用 **tar -tvf 命令**列出文件: ``` [root@localhost getssl]$ tar -tvf /root/debbuild/SDEBS/getssl-2.49-1.sdeb -rw-r--r-- root/root 1772110 2022-10-12 20:42 SOURCES/getssl-2.49.tar.gz -rw-r--r-- root/root 192 2022-08-02 15:02 SOURCES/getssl.crontab -rw-r--r-- root/root 126 2022-08-02 15:02 SOURCES/getssl.logrotate -rw-r--r-- root/root 1537 2022-08-02 15:02 SPECS/getssl.spec [root@localhost getssl]$ ``` 在您的平台上安装关联的源代码包后,若要构建或重新构建 RPM 或 DEB 包,请参考以下内容: - [将 getssl 构建为 RPM 包 (Redhat/CentOS/SuSe/Oracle/AWS)](#building-as-an-rpm-package) - [将 getssl 构建为 Debian 包 (Debian/Ubuntu)](#building-as-a-debian-package) ## 手动安装 由于脚本仅包含一个文件,您可以使用以下命令 仅快速安装 GetSSL: ``` curl --silent https://raw.githubusercontent.com/srvrco/getssl/latest/getssl > getssl ; chmod 700 getssl ``` 这会将 getssl Bash 脚本复制到当前位置,并 更改权限使其对您可执行。 若要获得更全面的安装(例如同时安装辅助脚本), 请使用每个发布 tarball 中提供的 Makefile。使用 `install` 目标。 您可以在 git 仓库中找到最新版本: ``` git clone https://github.com/srvrco/getssl.git ``` 对于 Arch Linux,AUR 中有相关软件包,请参见 [这里](https://aur.archlinux.org/packages/getssl/) 和 [那里](https://aur.archlinux.org/packages/getssl-git/)。 如果您使用 puppet,dthielking 提供了一个 [GetSSL Puppet 模块](https://github.com/dthielking/puppet_getssl) ## 入门 获得脚本后(参见上面的安装),下一步是使用 ``` ./getssl -c yourdomain.com ``` 其中 yourdomain.com 是您要为其创建 证书的主要域名。这将创建以下文件夹和文件。 ``` ~/.getssl ~/.getssl/getssl.cfg ~/.getssl/yourdomain.com ~/.getssl/yourdomain.com/getssl.cfg ``` 然后您可以编辑 `~/.getssl/getssl.cfg` 来设置您希望作为 大多数证书默认值的值。 然后编辑 `~/.getssl/yourdomain.com/getssl.cfg` 以设置 您希望用于此特定域名的值(确保取消注释并指定 正确的 `ACL` 选项,因为这是必需的)。 然后您只需运行: ``` getssl yourdomain.com ``` 它应该会运行,并提供如下输出: ``` Registering account Verify each domain Verifying yourdomain.com Verified yourdomain.com Verifying www.yourdomain.com Verified www.yourdomain.com Verification completed, obtaining certificate. Certificate saved in /home/user/.getssl/yourdomain.com/yourdomain.com.crt The intermediate CA cert is in /home/user/.getssl/yourdomain.com/chain.crt copying domain certificate to ssh:server5:/home/yourdomain/ssl/domain.crt copying private key to ssh:server5:/home/yourdomain/ssl/domain.key copying CA certificate to ssh:server5:/home/yourdomain/ssl/chain.crt reloading SSL services ``` **默认情况下)这将使用暂存服务器,因此它会给您一个 不受信任的证书(Fake Let's Encrypt)。** 更改配置文件中的服务器以获取完全有效的证书。 **注意:** 验证通过端口 80 (http)、端口 443 (https) 或 dns 完成。证书可以在备用 端口上使用(并通过 getssl 检查)。 ## 包含更多示例的详细入门指南 [获取 example.com 和 www.example.com 证书的指南](https://github.com/srvrco/getssl/wiki/Guide-to-getting-a-certificate-for-example.com-and-www.example.com) ## 通配符证书 `getssl` 支持创建通配符证书,即 _*.example.com_,这允许单个证书用于 *example.com* 下的任何域名,例如 *www.example.com*、*mail.example.com*。这些必须使用 dns-01 方法进行验证。 一个 *部分* `getssl.cfg` 配置文件示例: ``` VALIDATE_VIA_DNS=true export CPANEL_USERNAME='' export CPANEL_URL='https://www.cpanel.host:2083' export CPANEL_APITOKEN='1ABC2DEF3GHI4JKL5MNO6PQR7STU8VWX9YZA' DNS_ADD_COMMAND=/home/root/getssl/dns_scripts/dns_add_cpanel DNS_DEL_COMMAND=/home/root/getssl/dns_scripts/dns_del_cpanel ``` ## ISPConfig 需要在 `ISPConfig` 中创建一个远程用户以启用远程 API 访问。 您需要转到 `System -> Remote Users`,然后为远程用户启用功能,例如 `DNS zone functions`。 需要 PHP 来执行文件 ispconfig_soap.php 中的 soap 函数。 ``` DNS_ADD_COMMAND="/home/root/getssl/dns_scripts/dns_add_ispconfig" DNS_DEL_COMMAND="/home/root/getssl/dns_scripts/dns_del_ispconfig" export ISPCONFIG_REMOTE_USER_NAME="ussename" export ISPCONFIG_REMOTE_USER_PASSWORD="password" export ISPCONFIG_SOAP_LOCATION="https://localhost:8080/remote/index.php" export ISPCONFIG_SOAP_URL="https://localhost:8080/remote/" ``` 创建通配符证书(需要使用引号以防止通配符扩展): ``` getssl "*.example.domain" ``` 您可以使用 `getssl -a` 更新所有已配置的证书。 您也可以在 `SANS` 行中指定额外的域名,例如 `SANS="www.test.example.com"`。 这里不能包含任何会被通配符证书覆盖的域名。 ## 自动化更新 我使用以下 **cron** 作业 ``` 23 5 * * * /root/scripts/getssl -u -a -q ``` cron 将自动更新 getssl 并更新任何证书, 仅在出现问题/错误时输出。 * -u 标志会在有更新的版本可用时更新 getssl。 * -a 标志自动更新任何到期需要更新的证书。 * -q 标志表示“安静”,这样只有在 出现错误/问题时它才会输出并发邮件给我。 ## 结构 设计旨在提供运行代码的灵活性。 默认工作目录是 `~/.getssl`(可以通过 命令行修改)。 在 **工作目录** 内有一个配置文件 `getssl.cfg`,这是一个 简单的 bash 文件,包含变量,例如: ``` # Uncomment and modify any variables you need # The staging server is best for testing (hence set as default) CA="https://acme-staging-v02.api.letsencrypt.org" # This server issues full certificates, however has rate limits #CA="https://acme-v02.api.letsencrypt.org" AGREEMENT="https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf" # Set an email address associated with your account - generally set at account level rather than domain. ACCOUNT_EMAIL="me@example.com" ACCOUNT_KEY_LENGTH=4096 ACCOUNT_KEY="/home/user/.getssl/account.key" PRIVATE_KEY_ALG="rsa" # The time period within which you want to allow renewal of a certificate - this prevents hitting some of the rate limits. RENEW_ALLOW="30" # openssl config file. The default should work in most cases. SSLCONF="/usr/lib/ssl/openssl.cnf" ``` 然后,在 **工作目录** 内,每个 证书都有一个文件夹(基于其域名)。在该文件夹内将有一个 配置文件(同样名为 `getssl.cfg`)。例如: ``` # Uncomment and modify any variables you need # see https://github.com/srvrco/getssl/wiki/Config-variables for details # see https://github.com/srvrco/getssl/wiki/Example-config-files for example configs # # The staging server is best for testing #CA="https://acme-staging-v02.api.letsencrypt.org" # This server issues full certificates, however has rate limits #CA="https://acme-v02.api.letsencrypt.org" #AGREEMENT="https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf" PRIVATE_KEY_ALG="rsa" # Additional domains - this could be multiple domains / subdomains in a comma separated list SANS="www.example.org" # Acme Challenge Location. The first line for the domain, the following ones for each additional domain. # If these start with ssh: then the next variable is assumed to be the hostname and the rest the location. # An ssh key will be needed to provide you with access to the remote server. # Optionally, you can specify a different userid for ssh/scp to use on the remote server before the @ sign. # If left blank, the username on the local server will be used to authenticate against the remote server. # If these start with ftp: then the next variables are ftpuserid:ftppassword:servername:ACL_location # These should be of the form "/path/to/your/website/folder/.well-known/acme-challenge" # where "/path/to/your/website/folder/" is the path, on your web server, to the web root for your domain. #ACL=('/var/www/${DOMAIN}/web/.well-known/acme-challenge' # 'ssh:server5:/var/www/${DOMAIN}/web/.well-known/acme-challenge' # 'ssh:sshuserid@server5:/var/www/${DOMAIN}/web/.well-known/acme-challenge' # 'ftp:ftpuserid:ftppassword:${DOMAIN}:/web/.well-known/acme-challenge') # Location for all your certs, these can either be on the server (so full path name) or using ssh as for the ACL DOMAIN_CERT_LOCATION="ssh:server5:/etc/ssl/domain.crt" DOMAIN_KEY_LOCATION="ssh:server5:/etc/ssl/domain.key" #CA_CERT_LOCATION="/etc/ssl/chain.crt" #DOMAIN_CHAIN_LOCATION="" this is the domain cert and CA cert #DOMAIN_PEM_LOCATION="" this is the domain_key. domain cert and CA cert # The command needed to reload apache / nginx or whatever you use. # Several (ssh) commands may be given using a bash array: # RELOAD_CMD=('ssh:sshuserid@server5:systemctl reload httpd' 'logger getssl for server5 efficient.') RELOAD_CMD="service apache2 reload" # Define the server type. This can be https, ftp, ftpi, imap, imaps, pop3, pop3s, smtp, # smtps_deprecated, smtps, smtp_submission, xmpp, xmpps, ldaps or a port number which # will be checked for certificate expiry and also will be checked after # an update to confirm correct certificate is running (if CHECK_REMOTE) is set to true #SERVER_TYPE="https" #CHECK_REMOTE="true" ``` 如果文件的位置以 `ssh:` 开头,则假定下一部分 是主机名,后跟冒号,然后是路径。 文件将使用 scp 安全复制,并假定您在 服务器上有密钥(用于无密码访问)。您可以在 `.ssh/config` 文件中设置服务器的 用户、端口等。 如果 ACL 以 `ftp:` 或 `sftp:` 开头,则假定该行的 格式为 "ftp:UserID:Password:servername:/path/to/acme-challenge"。 sftp 需要 sshpass。 注意:FTP 仅可用于复制 token, **不能** 用于上传私钥或证书,因为 它不是一种安全的传输方式。 如果在远程服务器上使用,ssh 也可用于重载命令。 可以通过用分号分隔位置来为文件定义多个位置。 一个典型的配置文件,用于同一服务器上的 `example.com` 和 `www.example.com`,如下所示: ``` # uncomment and modify any variables you need # The staging server is best for testing CA="https://acme-staging-v02.api.letsencrypt.org" # This server issues full certificates, however has rate limits #CA="https://acme-v02.api.letsencrypt.org" # additional domains - this could be multiple domains / subdomains in a comma separated list SANS="www.example.com" #Acme Challenge Location. The first line for the domain, the following ones for each additional domain ACL=('/var/www/example.com/web/.well-known/acme-challenge') USE_SINGLE_ACL="true" DOMAIN_CERT_LOCATION="/etc/ssl/example.com.crt" DOMAIN_KEY_LOCATION="/etc/ssl/example.com.key" CA_CERT_LOCATION="/etc/ssl/example.com.bundle" RELOAD_CMD="service apache2 reload" ``` ## 自定义配置模板 您可以创建和自定义一个模板,用于生成 `~/.getssl/yourdomain.com/getssl.cfg` 配置文件,而不是使用默认模板。 根据您的 getssl 安装情况,创建以下允许的位置之一: ``` /etc/getssl/getssl_default.cfg /path/of/your/getssl/installation/getssl_default.cfg ~/.getssl/getssl_default.cfg ``` 并定义默认值,可选择使用动态变量,如下例所示: ``` # Additional domains - this could be multiple domains / subdomains in a comma separated list # Note: this is Additional domains - so should not include the primary domain. SANS="${EX_SANS}" ACL=('/home/myuser/${DOMAIN}/public_html/.well-known/acme-challenge') USE_SINGLE_ACL="true" RELOAD_CMD="sudo /bin/systemctl restart nginx.service" # Define the server type. This can be https, ftp, ftpi, imap, imaps, pop3, pop3s, smtp, # smtps_deprecated, smtps, smtp_submission, xmpp, xmpps, ldaps or a port number which # will be checked for certificate expiry and also will be checked after # an update to confirm correct certificate is running (if CHECK_REMOTE) is set to true SERVER_TYPE="https" #CHECK_REMOTE="true" CHECK_REMOTE_WAIT="1" # wait 1 second before checking the remote server ``` ## 服务器类型 OpenSSL 内置支持从多种 SSL 服务获取证书, 这些服务在 getssl 中可用于检查证书是否安装正确 | 服务器类型 | 端口 | 额外信息 | |------------------|------|--------------| | https | 443 | | | ftp | 21 | FTP 显式 | | ftpi | 990 | FTP 隐式 | | imap | 143 | StartTLS | | imaps | 993 | | | pop3 | 110 | StartTLS | | pop3s | 995 | | | smtp | 25 | StartTLS | | smtps_deprecated | 465 | | | smtps | 587 | StartTLS | | smtp_submission | 587 | StartTLS | | xmpp | 5222 | StartTLS | | xmpps | 5269 | | | ldaps | 6 | | | postgres | 5432 | | | 端口号 | | | ## 吊销证书 通常不需要吊销证书。 用法:`getssl -r path/to/cert path/to/key [CA_server]` 您需要指定要吊销的证书,以及用于签名/获取 原始证书的账户或域名私钥。`CA_server` 是一个可选参数, 默认为 Let's Encrypt (""),因为 这是目前唯一使用 ACME 协议的证书颁发机构。 ## 椭圆曲线密钥 您可以为账户密钥和域名密钥使用椭圆曲线密钥 (当然要不同,不要为两者使用相同的密钥)。prime256v1 (NIST P-256) 和 secp384r1 (NIST P-384) 都完全受支持。 secp521r1 (NIST P-521) 已包含在代码中,但目前 不被 Let's Encrypt 支持。 ## 首选链 如果 CA 提供多条链,则可以通过在 `getssl.cfg` 中使用 `PREFERRED_CHAIN` 变量或在调用 `getssl` 时指定 `--preferred-chain` 来选择使用哪条链。 这使用通配符匹配,因此请求 "X1" 会返回 CA 返回的 第一个包含文本 "X1" 的证书。注意,您可能需要转义 任何特殊字符,例如: ` PREFERRED_CHAIN="\(STAGING\) Doctored Durian Root CA X3"` * 暂存选项包括:" Doctored Durian Root CA X3" 和 " Pretend Pear X1" * 生产选项包括:"ISRG Root X1" 和 "ISRG Root X2" ## 在证书链中包含根证书 某些服务器,包括那些使用 Java keystores 的服务器,如果无法验证完整的签名者链,将不接受服务器证书。 具体来说,Nutanix Prism (Element 和 Central) 在手动将根 CA 的证书附加到 `fullchain.crt` 之前,不会接受该文件。 如果您的应用程序需要完整的链,即包括 CA 的根证书,那么可以通过 在 `getssl.cfg` 中添加以下行将其包含在 `fullchain.crt` 文件中 ``` FULL_CHAIN_INCLUDE_ROOT="true" ``` ## Windows Server 和 IIS 支持 **系统和软件要求**: - 带有 DNS 和 IIS 服务的 Windows Server - 以下之一 - WSL (Windows Subsystem for Linux) - Ubuntu 或任何其他发行版 - getssl 可以安装在 WSL 内或使用 `/mnt/` 路径访问 Windows - Bash - getssl 应安装在 Windows 中 - Git Bash - - Rtools4.0 - **WSL** - 安装和配置 WSL 2 - 添加删除 Windows 功能并选择“Windows for sub Linux” - 安装像 Ubuntu 或任何其他 Linux 平台的发行版 - 如果是新添加到系统的,则需要重新启动才能继续 - wsl --install -d ubuntu - 任何用户均可 - 复制文件到 WSL - 从 Windows 打开 `Windows Explorer` 并浏览到 `\\wsl$\Ubuntu\home\user\`,然后将 getssl 文件和文件夹 `.getssl` 和 `getssl` 放入用户主目录 `\\wsl$\Ubuntu\home\user\.getssl .` 或在 Windows 中 - 在 Windows 中打开 `cmd` 并输入\ `wsl -d Ubuntu /bin/bash /home/UserName/getssl/getssl domain.eu && exit` - 如果未在 WSL 中设置为默认,使用特定发行版时请使用 `wsl -d distro` 命令 **注意:** - 配置 WSL 时,请检查 `/etc/hosts` 文件中的域名 IP 是否正确,因为它会覆盖 DNS 服务器。 - 确保运行的是版本 2。 **GIT Bash** - MINGW64_NT - 安装 git GIT Bash - `"C:\Program Files\Git\bin\bash.exe" --login -i -- path_to/getssl/getssl domain.eu` **Rtools Bash** - MSYS_NT - 确保 Windows 系统环境变量中 `\rtools42\usr\bin` 的路径位于 `c:\windows\system32\` 之前,以便 getssl 使用 `Rtools` 应用程序而不是 Windows 应用程序(例如 `sort.exe`,它可能会崩溃),或者指定 sort 的完整路径。 - `\rtools42\usr\bin\bash.exe \Users\Administrator\getssl\getssl domain.eu 2>&1 1>out.txt` **更新 DNS TXT 记录** - 使用 `PowerShell` 添加和删除 `_acme-challenge` 记录 - dns_add_windows_dnsserver - dns_del_windows_dnsserver **注意:** 脚本支持可选的二级 `TLDs`。`sub.domain.co.uk` 您可以更新正则表达式 `.(co|com).uk` 以满足您的需求。 **IIS internet information service** - 在 `other_scripts` 文件夹下,您可以找到一个 `PowerSheell` 脚本 `iis_install_certeficate.ps1`,它生成 `PFX` 证书以安装在 `IIS` 中,并将域名绑定到 `PFX` 证书。 - WSL - `RELOAD_CMD=("powershell.exe -ExecutionPolicy Bypass -File "\\\\wsl$\\Ubuntu\\home\\user\\getssl\\other_scripts\\iis_install_certeficate.ps1" "domain.eu" "IIS SiteName" "\\\\wsl$\\Ubuntu\\home\\user\\ssl\\" "path_to_ssl_dir" )` - GIT and Rtools4 Bash - `RELOAD_CMD=("powershell.exe /c/Users/Administrator/getssl/other_scripts/iis_install_certeficate.ps1 domain.eu domain path_to_ssl_dir")` ## 构建为 RPM 包 为了将 getssl 构建为 RPM,程序必须被压缩成一个 tar.gz 文件,并且 tar.gz 文件的命名必须与 关联的 .spec 文件中包含的版本信息相匹配。 Spec 文件是特殊文件,包含有关如何从 源代码归档构建特定包的说明。在 Red Hat、CentOS、Oracle Linux 和 AWS Linux 系统上,RPMS 在 /root/rpmbuild/ 顶级目录中构建。SuSe 系统在 /usr/src/packages/ 作为顶级目录构建 RPMS。这些“顶级目录”将包含 BUILD、BUILDROOT、SPECS、RPMS、SRPMS 和 SOURCES 子目录。 SPECS 目录包含用于构建 RPMS 和 SRPMS 包的 \*.spec 文件。SOURCES 子目录将包含用于构建 RPM 包的 \*.spec 文件中引用的源代码归档文件。 有关安装 源代码 rpm(它将 .spec 文件和源代码归档文件 安装到 rpm 构建顶级目录(即 /root/rpmbuild/))的说明,请参见 [快速入门指南](#quick-start-guide)。在尝试构建 rpm 之前,您应该 已经安装了 src.rpm 文件。您也可以 手动将 .spec 文件安装到 \/SPECS/ 目录,并将 源代码 tarball 安装到 \ ``` 如果构建成功,程序应输出以下内容并验证程序 写入了 RPMS 和 SRPMS 包: ``` Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.BYQw0V + umask 022 + cd /root/rpmbuild/BUILD + cd /root/rpmbuild/BUILD + rm -rf getssl-2.49 + /usr/bin/gzip -dc /root/rpmbuild/SOURCES/getssl-2.49.tar.gz + /usr/bin/tar -xof - + STATUS=0 + '[' 0 -ne 0 ']' + cd getssl-2.49 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.xpA456 + umask 022 + cd /root/rpmbuild/BUILD + cd getssl-2.49 + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.zQs24R + umask 022 + cd /root/rpmbuild/BUILD + '[' /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64 '!=' / ']' + rm -rf /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64 ++ dirname /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64 + mkdir -p /root/rpmbuild/BUILDROOT + mkdir /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64 + cd getssl-2.49 + '[' -n /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64 -a /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64 '!=' / ']' + /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64 + /usr/bin/mkdir -p /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/bin + /usr/bin/mkdir -p /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts + /usr/bin/mkdir -p /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/other_scripts + /usr/bin/make DESTDIR=/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64 install mkdir -p /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64 install -Dvm755 getssl /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/bin/getssl 'getssl' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/bin/getssl' install -dvm755 /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl for dir in *_scripts; do install -dv /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/$dir; install -pv $dir/* /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/$dir/; done 'dns_scripts/Azure-README.txt' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/Azure-README.txt' 'dns_scripts/Cloudflare-README.md' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/Cloudflare-README.md' 'dns_scripts/DNS_IONOS.md' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/DNS_IONOS.md' 'dns_scripts/DNS_ROUTE53.md' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/DNS_ROUTE53.md' 'dns_scripts/GoDaddy-README.txt' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/GoDaddy-README.txt' 'dns_scripts/dns_add_acmedns' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_acmedns' 'dns_scripts/dns_add_azure' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_azure' 'dns_scripts/dns_add_challtestsrv' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_challtestsrv' 'dns_scripts/dns_add_clouddns' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_clouddns' 'dns_scripts/dns_add_cloudflare' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_cloudflare' 'dns_scripts/dns_add_cpanel' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_cpanel' 'dns_scripts/dns_add_del_aliyun.sh' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_del_aliyun.sh' 'dns_scripts/dns_add_dnspod' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_dnspod' 'dns_scripts/dns_add_duckdns' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_duckdns' 'dns_scripts/dns_add_dynu' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_dynu' 'dns_scripts/dns_add_godaddy' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_godaddy' 'dns_scripts/dns_add_hostway' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_hostway' 'dns_scripts/dns_add_ionos' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_ionos' 'dns_scripts/dns_add_ispconfig' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_ispconfig' 'dns_scripts/dns_add_joker' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_joker' 'dns_scripts/dns_add_lexicon' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_lexicon' 'dns_scripts/dns_add_linode' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_linode' 'dns_scripts/dns_add_manual' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_manual' 'dns_scripts/dns_add_nsupdate' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_nsupdate' 'dns_scripts/dns_add_ovh' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_ovh' 'dns_scripts/dns_add_pdns-mysql' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_pdns-mysql' 'dns_scripts/dns_add_vultr' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_vultr' 'dns_scripts/dns_add_windows_dns_server' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_add_windows_dns_server' 'dns_scripts/dns_del_acmedns' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_acmedns' 'dns_scripts/dns_del_azure' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_azure' 'dns_scripts/dns_del_challtestsrv' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_challtestsrv' 'dns_scripts/dns_del_clouddns' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_clouddns' 'dns_scripts/dns_del_cloudflare' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_cloudflare' 'dns_scripts/dns_del_cpanel' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_cpanel' 'dns_scripts/dns_del_dnspod' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_dnspod' 'dns_scripts/dns_del_duckdns' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_duckdns' 'dns_scripts/dns_del_dynu' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_dynu' 'dns_scripts/dns_del_godaddy' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_godaddy' 'dns_scripts/dns_del_hostway' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_hostway' 'dns_scripts/dns_del_ionos' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_ionos' 'dns_scripts/dns_del_ispconfig' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_ispconfig' 'dns_scripts/dns_del_joker' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_joker' 'dns_scripts/dns_del_lexicon' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_lexicon' 'dns_scripts/dns_del_linode' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_linode' 'dns_scripts/dns_del_manual' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_manual' 'dns_scripts/dns_del_nsupdate' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_nsupdate' 'dns_scripts/dns_del_ovh' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_ovh' 'dns_scripts/dns_del_pdns-mysql' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_pdns-mysql' 'dns_scripts/dns_del_vultr' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_vultr' 'dns_scripts/dns_del_windows_dns_server' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_del_windows_dns_server' 'dns_scripts/dns_freedns.sh' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_freedns.sh' 'dns_scripts/dns_godaddy' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_godaddy' 'dns_scripts/dns_route53.py' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/dns_route53.py' 'dns_scripts/ispconfig_soap.php' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/dns_scripts/ispconfig_soap.php' 'other_scripts/cpanel_cert_upload' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/other_scripts/cpanel_cert_upload' 'other_scripts/iis_install_certeficate.ps1' -> '/root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/usr/share/getssl/other_scripts/iis_install_certeficate.ps1' + install -Dpm 644 /root/rpmbuild/SOURCES/getssl.crontab /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/etc/cron.d/getssl + install -Dpm 644 /root/rpmbuild/SOURCES/getssl.logrotate /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64/etc/logrotate.d/getssl + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig /sbin/ldconfig: Warning: ignoring configuration file that cannot be opened: /etc/ld.so.conf: No such file or directory + /usr/lib/rpm/brp-compress + /usr/lib/rpm/brp-strip /usr/bin/strip + /usr/lib/rpm/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump + /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/brp-python-bytecompile '' 1 + /usr/lib/rpm/brp-python-hardlink + /usr/bin/true Processing files: getssl-2.49-1.noarch Provides: getssl = 2.49-1 Requires(interp): /bin/sh /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires(pre): /bin/sh Requires(post): /bin/sh Requires(preun): /bin/sh Requires(postun): /bin/sh Requires: /bin/bash /usr/bin/env Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64 Wrote: /root/rpmbuild/SRPMS/getssl-2.49-1.src.rpm Wrote: /root/rpmbuild/RPMS/noarch/getssl-2.49-1.noarch.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.hgma8Q + umask 022 + cd /root/rpmbuild/BUILD + cd getssl-2.49 + /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/getssl-2.49-1.x86_64 + exit 0 ``` ## 构建为 Debian 包 为了将 getssl 构建为 Debian 包,程序必须被压缩成一个 tar.gz 文件,并且 tar.gz 文件的命名必须与关联的 .spec 文件中包含的版本信息相匹配。Spec 文件是特殊文件,包含有关如何从源代码归档构建特定包的说明。 可以使用名为 "debbuild" 的实用程序构建 Debian 包,并使用与 RPM 工具类似的顶级目录结构,但使用 /root/debbuild/ 作为“顶级目录”。这些“顶级目录”将包含 BUILD、BUILDROOT、SPECS、DEBS、SDEBS 和 SOURCES 子目录,并遵循与 RPM 文件类似的布局。 SPECS 目录包含用于构建 DEB 和 SDEB 包的 \*.spec 文件。SOURCES 子目录将包含用于构建 DEB 和 SDEB 包的 \*.spec 文件中引用的源代码归档文件。 有关安装 源代码 SDEB(它将 .spec 文件和源代码归档文件 安装到 debbuild 顶级目录(即 /root/debbuild/))的说明,请参见 [快速入门指南](#quick-start-guide)。在尝试构建 DEB 包之前,您应该 已经安装了 SDEB 文件。您也可以手动 将 .spec 文件安装到 \/SPECS/ 目录,并将 源代码 tarball 安装到 \ ``` 如果构建成功,程序应输出以下内容并验证程序 写入了 DEB 和 SDEB 包: ``` This is debbuild, version 22.02.1\ndebconfigdir:/usr/lib/debbuild\nsysconfdir:/etc\n Lua: No Lua module loaded Executing (%prep): /bin/sh -e /var/tmp/deb-tmp.prep.92007 + umask 022 + cd /root/debbuild/BUILD + /bin/rm -rf getssl-2.49 + /bin/gzip -dc /root/debbuild/SOURCES/getssl-2.49.tar.gz + /bin/tar -xf - + STATUS=0 + '[' 0 -ne 0 ']' + cd getssl-2.49 + /bin/chmod -Rf a+rX,u+w,go-w . + exit 0 Executing (%build): /bin/sh -e /var/tmp/deb-tmp.build.40956 + umask 022 + cd /root/debbuild/BUILD + cd getssl-2.49 + exit 0 Executing (%install): /bin/sh -e /var/tmp/deb-tmp.install.36647 + umask 022 + cd /root/debbuild/BUILD + cd getssl-2.49 + '[' -n /root/debbuild/BUILDROOT/getssl-2.49-1.amd64 -a /root/debbuild/BUILDROOT/getssl-2.49-1.amd64 '!=' / ']' + /bin/rm -rf /root/debbuild/BUILDROOT/getssl-2.49-1.amd64 + /bin/mkdir -p /root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/bin + /bin/mkdir -p /root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts + /bin/mkdir -p /root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/other_scripts + /usr/bin/make DESTDIR=/root/debbuild/BUILDROOT/getssl-2.49-1.amd64 install mkdir -p /root/debbuild/BUILDROOT/getssl-2.49-1.amd64 install -Dvm755 getssl /root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/bin/getssl 'getssl' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/bin/getssl' install -dvm755 /root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl for dir in *_scripts; do install -dv /root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/$dir; install -pv $dir/* /root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/$dir/; done 'dns_scripts/Azure-README.txt' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/Azure-README.txt' 'dns_scripts/Cloudflare-README.md' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/Cloudflare-README.md' 'dns_scripts/DNS_IONOS.md' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/DNS_IONOS.md' 'dns_scripts/DNS_ROUTE53.md' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/DNS_ROUTE53.md' 'dns_scripts/GoDaddy-README.txt' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/GoDaddy-README.txt' 'dns_scripts/dns_add_acmedns' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_acmedns' 'dns_scripts/dns_add_azure' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_azure' 'dns_scripts/dns_add_challtestsrv' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_challtestsrv' 'dns_scripts/dns_add_clouddns' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_clouddns' 'dns_scripts/dns_add_cloudflare' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_cloudflare' 'dns_scripts/dns_add_cpanel' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_cpanel' 'dns_scripts/dns_add_del_aliyun.sh' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_del_aliyun.sh' 'dns_scripts/dns_add_dnspod' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_dnspod' 'dns_scripts/dns_add_duckdns' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_duckdns' 'dns_scripts/dns_add_dynu' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_dynu' 'dns_scripts/dns_add_godaddy' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_godaddy' 'dns_scripts/dns_add_hostway' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_hostway' 'dns_scripts/dns_add_ionos' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_ionos' 'dns_scripts/dns_add_ispconfig' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_ispconfig' 'dns_scripts/dns_add_joker' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_joker' 'dns_scripts/dns_add_lexicon' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_lexicon' 'dns_scripts/dns_add_linode' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_linode' 'dns_scripts/dns_add_manual' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_manual' 'dns_scripts/dns_add_nsupdate' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_nsupdate' 'dns_scripts/dns_add_ovh' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_ovh' 'dns_scripts/dns_add_pdns-mysql' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_pdns-mysql' 'dns_scripts/dns_add_vultr' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_vultr' 'dns_scripts/dns_add_windows_dns_server' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_add_windows_dns_server' 'dns_scripts/dns_del_acmedns' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_acmedns' 'dns_scripts/dns_del_azure' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_azure' 'dns_scripts/dns_del_challtestsrv' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_challtestsrv' 'dns_scripts/dns_del_clouddns' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_clouddns' 'dns_scripts/dns_del_cloudflare' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_cloudflare' 'dns_scripts/dns_del_cpanel' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_cpanel' 'dns_scripts/dns_del_dnspod' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_dnspod' 'dns_scripts/dns_del_duckdns' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_duckdns' 'dns_scripts/dns_del_dynu' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_dynu' 'dns_scripts/dns_del_godaddy' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_godaddy' 'dns_scripts/dns_del_hostway' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_hostway' 'dns_scripts/dns_del_ionos' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_ionos' 'dns_scripts/dns_del_ispconfig' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_ispconfig' 'dns_scripts/dns_del_joker' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_joker' 'dns_scripts/dns_del_lexicon' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_lexicon' 'dns_scripts/dns_del_linode' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_linode' 'dns_scripts/dns_del_manual' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_manual' 'dns_scripts/dns_del_nsupdate' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_nsupdate' 'dns_scripts/dns_del_ovh' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_ovh' 'dns_scripts/dns_del_pdns-mysql' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_pdns-mysql' 'dns_scripts/dns_del_vultr' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_vultr' 'dns_scripts/dns_del_windows_dns_server' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_del_windows_dns_server' 'dns_scripts/dns_freedns.sh' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_freedns.sh' 'dns_scripts/dns_godaddy' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_godaddy' 'dns_scripts/dns_route53.py' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/dns_route53.py' 'dns_scripts/ispconfig_soap.php' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/dns_scripts/ispconfig_soap.php' 'other_scripts/cpanel_cert_upload' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/other_scripts/cpanel_cert_upload' 'other_scripts/iis_install_certeficate.ps1' -> '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/usr/share/getssl/other_scripts/iis_install_certeficate.ps1' + install -Dpm 644 /root/debbuild/SOURCES/getssl.crontab /root/debbuild/BUILDROOT/getssl-2.49-1.amd64/etc/cron.d/getssl + install -Dpm 644 /root/debbuild/SOURCES/getssl.logrotate /root/debbuild/BUILDROOT/getssl-2.49-1.amd64/etc/logrotate.d/getssl + exit 0 Checking library requirements... Executing (package-creation): /bin/sh -e /var/tmp/deb-tmp.pkg.6107 for getssl + umask 022 + cd /root/debbuild/BUILD + /usr/bin/fakeroot -- /usr/bin/dpkg-deb -b /root/debbuild/BUILDROOT/getssl-2.49-1.amd64/main /root/debbuild/DEBS/all/getssl_2.49-1_all.deb dpkg-deb: warning: parsing file '/root/debbuild/BUILDROOT/getssl-2.49-1.amd64/main/DEBIAN/control' near line 10 package 'getssl': missing 'Maintainer' field dpkg-deb: warning: ignoring 1 warning about the control file(s) dpkg-deb: building package 'getssl' in '/root/debbuild/DEBS/all/getssl_2.49-1_all.deb'. + exit 0 Executing (%clean): /bin/sh -e /var/tmp/deb-tmp.clean.52780 + umask 022 + cd /root/debbuild/BUILD + '[' /root/debbuild/BUILDROOT/getssl-2.49-1.amd64 '!=' / ']' + /bin/rm -rf /root/debbuild/BUILDROOT/getssl-2.49-1.amd64 + exit 0 Wrote source package getssl-2.49-1.sdeb in /root/debbuild/SDEBS. Wrote binary package getssl_2.49-1_all.deb in /root/debbuild/DEBS/all ``` ## 问题 / 故障 / 帮助 如果您有任何问题,请在 记录 [wiki](https://github.com/srvrco/getssl/wiki) 上有更多帮助页面 如果您有任何改进建议,欢迎提交 pull request,或提出 issue。
标签:ACME协议, Bash, ECC椭圆曲线, HTTPS, Let's Encrypt, Linux运维, Shell脚本, SSL证书, Wildcard证书, 公钥基础设施, 内存分配, 加密, 域名验证, 安全测试工具, 应用安全, 服务器配置, 漏洞扫描器, 网络安全, 证书管理, 远程服务器, 隐私保护