SSL証明書APIで注文を自動化:Goサンプルと実行例
SSL証明書の新規注文・再発行・証明書取得を、画面操作なしで自動化できます。
slogical SSL REST API を呼び出す Go サンプルクライアントです。go run ssl-client.go ですぐ実行でき、IIS/Windows 向けの PFX(PKCS#12)作成もローカルで完結します(OpenSSL 不要)。
概要
このサンプルクライアントは以下の 6 パターンに対応しています。
- 新規注文(後払い)× メール認証 / ファイル認証 / DNS 認証
- 再発行 × メール認証 / ファイル認証 / DNS 認証
認証の承認待ち中は自動的にポーリング(デフォルト 30 秒ごと)し、
証明書が発行されると自動でダウンロードします。
途中で中断しても、ステートファイル(ssl-state.json)から処理を再開できます。
aws configure で認証情報が設定済みであれば、
TXT レコードの作成・削除を自動で行います。
AWS CLI がない場合は、設定すべき DNS レコードを表示して手動設定を案内します。
ダウンロード
一式(ssl-client.go / go.mod / go.sum の3ファイル入り zip)をダウンロードして展開し、Go がインストールされた環境で実行してください。
↓ サンプル一式をダウンロード(ssl-client.zip)個別ファイル: ssl-client.go / go.mod / go.sum (3ファイルを同じフォルダに置いてください)
セットアップ
ssl-client.zip を任意のフォルダに展開するだけです。
同梱の go.mod / go.sum は pfx コマンドが使う PKCS#12 ライブラリのバージョン固定指定で、初回実行時に自動取得されます
(BSD-3 ライセンスの pure-Go 実装のため OpenSSL のインストールは不要です)。
# Go バージョン確認(1.20 以上) go version # zip を展開したフォルダで実行するだけ go run ssl-client.go help
※ go.mod / go.sum を使わず手動でセットアップする場合:
go mod init sslclient && go get software.sslmate.com/src/go-pkcs12@v0.7.3 golang.org/x/term@v0.20.0
(バージョンは固定指定を推奨します。@latest は PFX の生成形式が予告なく変わる可能性があります)
API キーは マイページ で取得できます。
毎回指定するのが面倒な場合は環境変数 SSL_API_KEY に設定しておくと便利です。
# Linux / macOS export SSL_API_KEY=your_api_key_here # Windows PowerShell $env:SSL_API_KEY = "your_api_key_here"
新規注文
order コマンドで後払いの新規注文を作成します。
注文後、CSR と秘密鍵が自動生成されてカレントディレクトリに保存されます。
ssl-client.key は厳重に保管してください。
紛失した場合は再発行が必要です。
新規注文 — メール認証
DigiCert が admin@ / webmaster@ / postmaster@ 等に承認メールを送信します。
-dcv-email で受信するアドレスを指定してください。
go run ssl-client.go order \ -api-key YOUR_API_KEY \ -product RapidSSL \ -years 1 \ -domain www.example.com \ -dcv email \ -dcv-email admin@example.com \ -corp-name "株式会社〇〇" \ -corp-name-alph "Example Corp" \ -name1 田中 \ -name2 太郎 \ -name-alph1 Tanaka \ -name-alph2 Taro \ -tel 03-1234-5678 \ -email tanaka@example.com \ -post 1000001 \ -addr1 東京都 \ -addr2 千代田区 \ -addr3 "〇〇1-1"
実行すると以下の流れで処理が進みます:
- CSR と秘密鍵を生成(
ssl-client.key/ssl-client.csr) - API に注文を送信(
POST /ssl/api/v1/orders) - 指定のメールアドレスに承認メールが送信されます → クリックしてください
- 30 秒ごとにステータスをポーリング
- 発行完了 →
cert_12345.pem/chain_12345.pemに保存
新規注文 — ファイル認証
Web サーバーの特定 URL にファイルを設置して認証する方式です。
プログラムがファイルを自動作成するので、それを Web サーバーのドキュメントルートにコピーしてください。
go run ssl-client.go order \ -api-key YOUR_API_KEY \ -product RapidSSL \ -years 1 \ -domain www.example.com \ -dcv file \ -corp-name "株式会社〇〇" \ -corp-name-alph "Example Corp" \ -name1 田中 \ -name2 太郎 \ -name-alph1 Tanaka \ -name-alph2 Taro \ -tel 03-1234-5678 \ -email tanaka@example.com \ -post 1000001 \ -addr1 東京都 \ -addr2 千代田区 \ -addr3 "〇〇1-1"
実行すると以下の流れで処理が進みます:
- CSR と秘密鍵を生成
- API に注文を送信 → DCV トークンを取得
.well-known/pki-validation/fileauth.txtを作成(内容はトークン)- このファイルを Web サーバーのドキュメントルートに配置してください
→http://www.example.com/.well-known/pki-validation/fileauth.txtでアクセス可能に - 30 秒ごとにステータスをポーリング → 認証完了で証明書を保存
新規注文 — DNS 認証
AWS CLI がインストールされていれば、Route53 の TXT レコードを自動で作成・削除します。
-dns-zone-id に Route53 の Hosted Zone ID を指定してください。
go run ssl-client.go order \ -api-key YOUR_API_KEY \ -product RapidSSL \ -years 1 \ -domain www.example.com \ -dcv dns \ -dns-zone-id Z0123456789ABCDEFGHIJ \ -corp-name "株式会社〇〇" \ -corp-name-alph "Example Corp" \ -name1 田中 \ -name2 太郎 \ -name-alph1 Tanaka \ -name-alph2 Taro \ -tel 03-1234-5678 \ -email tanaka@example.com \ -post 1000001 \ -addr1 東京都 \ -addr2 千代田区 \ -addr3 "〇〇1-1"
Route53 に以下の TXT レコードを自動作成し、証明書発行後に自動削除します:
名前 : _dnsauth.www.example.com タイプ: TXT 値 : <DCV トークン> TTL : 60
-dns-zone-id を省略すると手動モードになります。
プログラムが設定すべき DNS レコードを表示するので、DNS 管理画面で設定して Enter を押してください。
go run ssl-client.go order \ -api-key YOUR_API_KEY \ -product RapidSSL \ -years 1 \ -domain www.example.com \ -dcv dns \ -corp-name "株式会社〇〇" \ -name1 田中 \ -name2 太郎 \ -tel 03-1234-5678 \ -email tanaka@example.com
実行すると以下の表示が出るので、DNS 管理画面で設定して Enter を押してください:
━━ DNS 認証(手動設定)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 名前 : _dnsauth.www.example.com タイプ: TXT 値 : _abcdefghijklmnopqrstuvwxyz01234 TTL : 60 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ DNS レコードを設定したら Enter を押してください ...
再発行
reissue コマンドで発行済み注文の再発行を行います。
新しい CSR・秘密鍵が自動生成されます(ssl-client-reissue.key / ssl-client-reissue.csr)。
-order-id には当サイトの注文 ID を指定します(マイページで確認できます)。ステートファイルが存在する場合は、注文 ID を省略できます。
再発行 — メール認証
go run ssl-client.go reissue \ -api-key YOUR_API_KEY \ -order-id 12345 \ -domain www.example.com \ -dcv email \ -dcv-email admin@example.com
再発行 — ファイル認証
go run ssl-client.go reissue \ -api-key YOUR_API_KEY \ -order-id 12345 \ -domain www.example.com \ -dcv file
実行すると .well-known/pki-validation/fileauth.txt が作成されます。
Web サーバーのドキュメントルートに配置してください。
再発行 — DNS 認証
go run ssl-client.go reissue \ -api-key YOUR_API_KEY \ -order-id 12345 \ -domain www.example.com \ -dcv dns \ -dns-zone-id Z0123456789ABCDEFGHIJ
go run ssl-client.go reissue \ -api-key YOUR_API_KEY \ -order-id 12345 \ -domain www.example.com \ -dcv dns
途中再開
処理の途中でCtrl+C などで中断しても、ステートファイル(ssl-state.json)に状態が保存されています。
同じコマンドをもう一度実行するだけで、中断した時点から自動的に再開します。
# 例: 中断した新規注文(メール認証)を再開する場合 # ssl-state.json が存在する限り、フラグを省略しても再開できます go run ssl-client.go order -api-key YOUR_API_KEY
ステートファイルの内容(例):
{
"action": "order",
"step": "pending-dcv",
"order_id": 12345,
"dcv": "file",
"token": "_abcdefghijklmnopqrstuvwxyz01234",
"domain": "www.example.com",
"file_auth_path": ".well-known/pki-validation/fileauth.txt"
}
処理完了後は step が completed に更新されます。
別のドメインの注文を始める場合は、ステートファイルを削除または別名で指定してください。
# ステートファイルを指定して別の注文を管理 go run ssl-client.go order -api-key YOUR_API_KEY -domain other.example.com \ -state-file ssl-state-other.json ...
満了一覧(expiry)
更新・再発行期日の迫っているコモンネームの一覧を表示します。
マイページからダウンロードできる CSV(renewal_cn.csv / reissue_cn.csv / cert_expiry_cn.csv)と同じ内容です。
# 契約満了が迫っているもの(更新のご検討対象) go run ssl-client.go expiry -api-key YOUR_API_KEY -type renewal # 証明書が契約より先に満了するもの(再発行が必要) go run ssl-client.go expiry -api-key YOUR_API_KEY -type reissue # 証明書満了90日以内すべて go run ssl-client.go expiry -api-key YOUR_API_KEY -type cert
出力例:
種別: renewal / 件数: 2 注文ID:12345 CN:www.example.jp ステータス:issued 後続注文:- 契約満了日:2026-08-01 証明書満了日:2026-08-01 契約満了まで:28日 注文ID:12388 CN:shop.example.jp ステータス:issued 後続注文:発行待ち 契約満了日:2026-09-10 証明書満了日:2026-09-10 契約満了まで:68日
「後続注文:発行待ち」は、同じコモンネームでこの注文より新しい未発行の注文(更新・再発行の手続き中など)があることを示します。
残日数は renewal では契約満了まで、reissue / cert では証明書満了までの日数です(マイナスは満了済み)。
PFX(PKCS#12)作成 — IIS/Windows 向け
pfx コマンドで、ダウンロード済みの証明書と reissue が生成した秘密鍵から
IIS にそのままインポートできる PFX ファイルを作成します。
OpenSSL は不要で、処理はすべてお手元の PC で完結します(秘密鍵がマシンの外に出ることはありません。API 通信もありません)。
Windows サーバーの証明書更新は、次の流れで「サーバーの前に行くのは PFX の取り込みとバインドだけ」になります:
# ① 自席: API で再発行(CSR・秘密鍵を自動生成) go run ssl-client.go reissue -api-key YOUR_API_KEY -order-id 12345 -domain www.example.jp -dcv file # ② 自席: 証明書ダウンロード(発行完了後に自動実行されます。手動なら:) go run ssl-client.go download -api-key YOUR_API_KEY -order-id 12345 # ③ 自席: PFX 作成(ファイル名は ①② の出力から自動解決) go run ssl-client.go pfx -order-id 12345 # ④⑤ サーバー: PFX 取り込みとバインド(手順は ③ の実行時に表示されます) # 仕上げ: 自席からバインド反映を確認 go run ssl-client.go check -domain www.example.jp -order-id 12345
パスワードは省略するとマスク表示の対話入力になります(画面に表示されません)。
自動化する場合は -password-file(1行目にパスワードを書いたファイル)か環境変数 SSL_PFX_PASSWORD をご利用ください
(-password フラグはコマンド履歴・プロセス一覧に残るため非推奨です)。
PKCS#12 の鍵導出は総当たり攻撃に強くないため、12文字以上のランダムなパスワードを推奨します。
形式は AES-256 + PBKDF2-SHA-256(PKCS#12 Modern2023 profile・バージョン固定)で、Windows Server 2019 以降 / OpenSSL 3.0 以降で読み込めます。
Windows Server 2016 以前に取り込む場合は -compat(3DES 互換モード)を指定してください(暗号強度が弱いため、ファイルの取り扱いにご注意ください)。
生成完了時に、サーバー側での取り込みコマンド(Import-PfxCertificate)と IIS バインドの手順が表示されます。
バインド後の確認(check)
check コマンドで、サーバーが実際に配信している証明書を自席から確認できます。
-order-id を指定すると、ダウンロード済みの証明書と SHA-256 フィンガープリント(証明書全体)を比較し、
新しい証明書に差し替わったかを判定します。
go run ssl-client.go check -domain www.example.jp -order-id 12345
出力例:
■ 配信中の証明書(www.example.jp:443) CN : www.example.jp 発行者 : RapidSSL TLS RSA CA G1 シリアル : 0A1B2C3D... 有効期間 : 2026-07-19 〜 2027-02-03(残り 199 日) 信頼チェーン: OK(ホスト名一致・信頼された CA) 差し替え確認: ✅ cert_12345.pem と一致(SHA-256 フィンガープリント)— 新しい証明書が配信されています
監視結果の取得(monitor)— SSL監視サービス Pro
monitor コマンドで、SSL監視サービス(Pro プラン)の
監視対象全 FQDN の最新チェック結果(スコア・残日数・満了日)を取得できます。
自社の管理画面・台帳との連携にご利用ください。
go run ssl-client.go monitor -api-key YOUR_API_KEY
出力例:
監視対象: 3 件(FQDN 毎の最新チェック結果) www.example.jp スコア:A+(95) 残り180日 満了:2027-01-15 23:59:59 shop.example.jp スコア:A(88) 残り45日 満了:2026-09-02 23:59:59 admin.example.jp:8443 スコア:B(76) 残り30日 満了:2026-08-18 23:59:59 (外部CN)
オプション一覧
order フラグ
| フラグ | 説明 | デフォルト |
|---|---|---|
-api-key | API キー(環境変数 SSL_API_KEY でも可) | — |
-product | 製品名: RapidSSL / RapidSSLWildcard / QuickSSLPremium / QuickSSLPremiumWildcard | RapidSSL |
-years | 有効年数(1〜3) | 1 |
-domain | ドメイン名(CN)【必須】 | — |
-sans | 追加ドメイン(スペース区切り) | — |
-dcv | 認証方法: email / file / dns | email |
-dcv-email | メール認証のアドレス(例: admin@example.com) | — |
-dns-zone-id | Route53 Hosted Zone ID(dns 認証で自動設定する場合) | — |
-corp-name | 会社名(日本語) | — |
-corp-name-alph | 会社名(英語) | — |
-name1 | 担当者 姓 | — |
-name2 | 担当者 名 | — |
-name-alph1 | 担当者 姓(英語) | — |
-name-alph2 | 担当者 名(英語) | — |
-tel | 電話番号 | — |
-email | 担当者メールアドレス | — |
-post | 郵便番号 | — |
-addr1 | 住所(都道府県) | — |
-addr2 | 住所(市区町村) | — |
-addr3 | 住所(番地) | — |
-state-file | ステートファイルのパス | ssl-state.json |
-poll-interval | ポーリング間隔(秒) | 30 |
reissue フラグ
| フラグ | 説明 | デフォルト |
|---|---|---|
-api-key | API キー | — |
-order-id | 再発行する注文 ID(省略時はステートファイルから) | — |
-domain | ドメイン名(省略時はステートファイルから) | — |
-dcv | 認証方法: email / file / dns | email |
-dcv-email | メール認証アドレス | — |
-dns-zone-id | Route53 Hosted Zone ID | — |
-state-file | ステートファイルのパス | ssl-state.json |
-poll-interval | ポーリング間隔(秒) | 30 |
status / download フラグ
| フラグ | 説明 |
|---|---|
-api-key | API キー |
-order-id | 注文 ID(省略時はステートファイルから) |
-state-file | ステートファイルのパス(デフォルト: ssl-state.json) |
expiry フラグ
| フラグ | 説明 | デフォルト |
|---|---|---|
-api-key | API キー | — |
-type | 一覧の種別: renewal(契約満了90日以内)/ reissue(証明書が契約より先に満了)/ cert(証明書満了90日以内すべて) | renewal |
pfx フラグ(API通信なし・ローカル完結)
| フラグ | 説明 | デフォルト |
|---|---|---|
-key | 秘密鍵ファイル(reissue が生成した鍵。PKCS#1/PKCS#8/SEC1 対応) | ssl-client-reissue.key |
-cert | 証明書ファイル | cert_<注文ID>.pem |
-chain | 中間証明書ファイル(-cert 明示時は自動選択しません) | chain_<注文ID>.pem(-cert 省略時のみ) |
-order-id | 注文 ID(ファイル名の解決に使用。省略時はステートファイルから) | — |
-out | 出力 PFX ファイル名 | certificate_<注文ID>.pfx |
-password-file | PFX パスワードを1行目に書いたファイル(自動化向け) | — |
-password | PFX パスワード(履歴・プロセス一覧に残るため非推奨) | 環境変数 SSL_PFX_PASSWORD → マスク対話入力 |
-compat | 互換モード(3DES)。Windows Server 2016 以前へ取り込む場合のみ | オフ(AES-256 = Server 2019 以降) |
check フラグ
| フラグ | 説明 | デフォルト |
|---|---|---|
-domain | 確認するドメイン名【必須】 | — |
-port | ポート番号 | 443 |
-order-id | ダウンロード済み証明書(cert_<注文ID>.pem)と SHA-256 フィンガープリント比較する注文 ID | ステートファイルから |
monitor フラグ
| フラグ | 説明 | デフォルト |
|---|---|---|
-api-key | API キー(SSL監視サービス Pro プランのご契約が必要) | — |
2026年07月19日 3コマンドを追加:
- pfx — PFX(PKCS#12)作成。IIS/Windows向け・OpenSSL不要・秘密鍵はローカルのまま(一式 zip 配布を開始=go.mod / go.sum 同梱。パスワードはマスク入力・Server 2016 以前向け -compat あり)
- check — バインド後にサーバーが配信中の証明書を自席から確認(ダウンロード済み証明書とのSHA-256フィンガープリント一致判定つき)
- monitor — SSL監視サービス(Proプラン)の最新チェック結果を取得
2026年06月13日 サンプルクライアント公開(order / reissue / status / download)
📅 ページ更新日: 2026/07/19