メニューSSL証明書 - メニュー
SSL証明書 > APIドキュメント > サンプルクライアント
API サンプルクライアント

Go サンプルプログラム

slogical SSL REST API を使って、SSL証明書の新規注文・再発行を自動化するサンプルプログラムです。
Go 標準ライブラリのみ使用のため、外部パッケージ不要。go run ssl-client.go ですぐに実行できます。

ベータ公開中 このサンプルプログラムは現在動作確認中です。予告なく変更・修正される場合があります。不具合や気になる点があれば お問い合わせ からご連絡ください。

概要

このサンプルクライアントは以下の 6 パターンに対応しています。

  • 新規注文(後払い)× メール認証 / ファイル認証 / DNS 認証
  • 再発行 × メール認証 / ファイル認証 / DNS 認証

認証の承認待ち中は自動的にポーリング(デフォルト 30 秒ごと)し、 証明書が発行されると自動でダウンロードします。
途中で中断しても、ステートファイルssl-state.json)から処理を再開できます。

DNS 認証(Route53): AWS CLI がインストールされ、aws configure で認証情報が設定済みであれば、 TXT レコードの作成・削除を自動で行います。 AWS CLI がない場合は、設定すべき DNS レコードを表示して手動設定を案内します。

ダウンロード

ソースコードをダウンロードして、Go がインストールされた環境で実行してください。

↓ ssl-client.go をダウンロード
Go のインストールがまだの方は go.dev/doc/install からダウンロードしてください(Go 1.20 以上推奨)。

セットアップ

外部ライブラリは不要です。go run ssl-client.go でそのまま実行できます。

# Go バージョン確認(1.20 以上)
go version

# ヘルプの表示
go run ssl-client.go help

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 \
  -invoice-email tanaka@example.com \
  -post         1000001 \
  -addr1        東京都 \
  -addr2        千代田区 \
  -addr3        "〇〇1-1"

実行すると以下の流れで処理が進みます:

  1. CSR と秘密鍵を生成(ssl-client.key / ssl-client.csr
  2. API に注文を送信(POST /orders
  3. 指定のメールアドレスに承認メールが送信されます → クリックしてください
  4. 30 秒ごとにステータスをポーリング
  5. 発行完了 → 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"

実行すると以下の流れで処理が進みます:

  1. CSR と秘密鍵を生成
  2. API に注文を送信 → DCV トークンを取得
  3. .well-known/pki-validation/fileauth.txt を作成(内容はトークン)
  4. このファイルを Web サーバーのドキュメントルートに配置してください
    http://www.example.com/.well-known/pki-validation/fileauth.txt でアクセス可能に
  5. 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"
}

処理完了後は stepcompleted に更新されます。
別のドメインの注文を始める場合は、ステートファイルを削除または別名で指定してください。

# ステートファイルを指定して別の注文を管理
go run ssl-client.go order -api-key YOUR_API_KEY -domain other.example.com \
  -state-file ssl-state-other.json ...

オプション一覧

order フラグ

フラグ説明デフォルト
-api-keyAPI キー(環境変数 SSL_API_KEY でも可)
-product製品名: RapidSSL / RapidSSLWildcard / QuickSSLPremium / QuickSSLPremiumWildcardRapidSSL
-years有効年数(1〜3)1
-domainドメイン名(CN)【必須】
-sans追加ドメイン(スペース区切り)
-dcv認証方法: email / file / dnsemail
-dcv-emailメール認証のアドレス(例: admin@example.com
-dns-zone-idRoute53 Hosted Zone ID(dns 認証で自動設定する場合)
-corp-name会社名(日本語)
-corp-name-alph会社名(英語)
-name1担当者 姓
-name2担当者 名
-name-alph1担当者 姓(英語)
-name-alph2担当者 名(英語)
-tel電話番号
-email担当者メールアドレス
-invoice-email請求先メール(省略時は -email と同じ)
-post郵便番号
-addr1住所(都道府県)
-addr2住所(市区町村)
-addr3住所(番地)
-state-fileステートファイルのパスssl-state.json
-poll-intervalポーリング間隔(秒)30

reissue フラグ

フラグ説明デフォルト
-api-keyAPI キー
-order-id再発行する注文 ID(省略時はステートファイルから)
-domainドメイン名(省略時はステートファイルから)
-dcv認証方法: email / file / dnsemail
-dcv-emailメール認証アドレス
-dns-zone-idRoute53 Hosted Zone ID
-state-fileステートファイルのパスssl-state.json
-poll-intervalポーリング間隔(秒)30

status / download フラグ

フラグ説明
-api-keyAPI キー
-order-id注文 ID(省略時はステートファイルから)
-state-fileステートファイルのパス(デフォルト: ssl-state.json
↑ 上へ 注文 検索