SSLならセクティゴ・コモドのEV・企業・ドメイン認証

SSLならセクティゴ・コモドのEV・企業・ドメイン認証

サポート


こちらからサポート記事を検索いただけます

検索キーワード:

注文・設定方法など (CaaS関連)

主要ACMEクライアントでの指定方法

Certbot by Electronic Frontier Foundation (EFF) and sponsored by Sectigo


最も一般的なACMEクライアントです。

1. 事前登録フェーズ

certbot register コマンドは、ACMEサーバーにアカウントを登録するためのものです。証明書を発行する前の「事前準備」にあたります

実行コマンドの例

certbot register \
--email yourname@example.com\
--server "https://acme.sectigo.com/v2/OV"\
--eab-kid "お客様のAccount ID" \
--eab-hmac-key "お客様のEAB MAC KEY" \
引数 説明
register 必須 Certbotに対して、ACMEサーバーに新しいアカウントを作成(登録)するよう指示します。
--email 必須 証明書の期限切れ通知や、アカウントに関する重要な連絡を受け取るために登録するメールアドレス。値:ご自身のメールアドレス部分にお読み変え下さい
--server 必須 接続先のACMEサーバーのURL指定。この例ではOV(組織認証)用エンドポイントを指定しています。値:ドメイン認証の場合には "https://acme.sectigo.com/v2/DV"になります
--eab-kid 必須 ACMEリクエストを紐付けるために必要な値:外部アカウントバインディング (EAB) のキーID(お客様のAccount ID)はマイページより取得して下さい。
--eab-hmac-key 必須 リクエストの正当性を証明するためのEAB用のHMACキー(パスワードのようなもの)です。このもマイページより取得して下さい。

2. 発行フェーズ certbot certonly コマンド

Bashでのコマンド実行例

certbot certonly --manual \
--server "https://acme.sectigo.com/v2/OV" \
--eab-kid "お客様のAccount ID" \
--eab-hmac-key "お客様のEAB MAC KEY" \
-d example.jp
引数 説明
certonly 任意 証明書の「取得のみ」を行い、Webサーバー(ApacheやNginx)への自動設置は一気に行わないことを指定します。certbotのコマンド実行PCと公開サーバが異なる場合にはこのように取得のみを指定して下さい※取得後のフックコマンドで当該サーバにアップロードするなどの2次スクリプトを別途用意します何も指定しない場合標準で用意されたスクリプトでapache等に自動インストールされます
--manual 任意 認証作業を手動で行うモードです。通常、DNSのTXTレコード追加や、サーバーへのファイル設置を対話形式で行う場合のみ指定して下さいプラグイン対応で自動認証をさせる場合にはこのオプションは不要です何も指定しない場合対話式ではなく自動モードで実行されます
--key-type rsa 任意: 生成する秘密鍵のアルゴリズムを RSA に指定します。このオプションの指定がない場合には楕円暗号方式で発行します
--rsa-key-size 2048 任意 RSA鍵のサイズを 2048ビット に指定しています。レガシー端末もカバーする場合の標準的なセキュリティ強度です。
--email 任意 通知用のメールアドレスです。
--logs-dir 任意 Certbotの実行ログを保存するディレクトリをカスタマイズする場合のみ指定。デフォルト/var/log/letsencrypt以外の場所としてこの例では(/var/log/MYDOMAINSSL/)を指定しています。
--server 必須 ACMEサーバーを指定しています。ドメイン認証タイプならDVになります
--eab-kid 必須アカウント紐付け用のID。 はマイページより取得して下さい。
--eab-hmac-key 必須アカウント紐付け用のHMACキー。このもマイページより取得して下さい。
-d 必須 証明書を発行する対象のドメイン名(例:example.jp)を指定します。両利きを希望の場合続けて列挙します -d example.com -d www.example.com

※アカウントの登録

ACMESharp(ACMESharpCore / ACMESharpWindows)はWindows環境で利用されるライブラリです。アカウント登録フェーズでマイページに記載されているEAB情報を指定します。

PowerShell

# アカウントの登録
New-ACMEAccount -Server "https://acme.sectigo.com/v2/OV" `
-EabKeyIdentifier "お客様のAccount ID" `
-EabKey "お客様のEAB MAC KEY" `
-EabAlgorithm HS256 `
-Email "admin@example.jp" -AcceptTOS
アカウント登録の次は「ドメインの識別(Identifier)」、「認証(Challenge)」、そして「証明書の発行」というステップに進みます。

1.ドメインの識別(Order)の作成

発行したいドメイン名をすべて指定して「オーダー(指示内容)」を以下のように作成します。
example.com と www.example.com のように、1つの証明書に両利き:複数のドメイン(SANs)を含めたい場合、ACMESharpでは以下の手順で指定します。

PowerShell

# 複数のドメインを指定してオーダーを作成
$order = New-ACMEOrder -Identifiers "example.com", "www.example.com"

2.ドメインの所有権確認(Challenge)

オーダーを作成すると、各ドメインに対して「認証審査(Challenge)」が必要になります。各ドメインの所有権を証明するための情報を取得します。

PowerShell HTTP認証の場合の例

# オーダー詳細の取得
$orderDetail = Get-ACMEOrder -OrderPrompt $order

# 各ドメインの認証情報をループで取得(例:HTTP認証の場合)
foreach ($auth in $orderDetail.Authorizations) {
$challenge = Get-ACMEChallenge -AuthorizationPrompt $auth -Type http-01
# 配置すべきファイル名と内容を確認
$challenge.HttpResourcePath # 例: .well-known/acme-challenge/XXXX
$challenge.HttpResourceValue # 配置するファイルの中身(トークン)
$challenge
}

PowerShell DNS認証の場合の例

# オーダー詳細の取得
$orderDetail = Get-ACMEOrder -OrderPrompt $order

# 各ドメインの認証情報をループで取得(例:DNS認証の場合)
foreach ($auth in $orderDetail.Authorizations) {
$challenge = Get-ACMEChallenge -AuthorizationPrompt $auth -Type dns-01
# ↑で表示される $challenge.DnsRecordName と $challenge.DnsRecordValue をDNSに登録します
$challenge
}

3. 認証の実行

DNSレコード(またはHTTPファイル)の設置が完了したら、ACMEサーバーに検証を依頼します。

PowerShell

# 設置した各認証を実行
foreach ($auth in $orderDetail.Authorizations) {
$challenge = Get-ACMEChallenge -AuthorizationPrompt $auth -Type dns-01
Submit-ACMEChallenge -ChallengePrompt $challenge
}

4. 証明書の署名リクエスト(CSR)と発行

すべてのドメインの認証が「valid(有効)」になったら、証明書を生成します。

PowerShell

# 秘密鍵の作成
$key = New-ACMECertificateKey -Name "MyExampleCertKey" -Type RSA -Size 2048

# 証明書の請求(ここで複数のコモンネームが紐付いた状態で発行されます)
$certOrder = New-ACMECertificate -OrderPrompt $order -CertificateKeyPrompt $key -Name
"MyExampleCert"

acme-client (OpenBSD/C)

設定ファイル acme-client.conf に記述する方法が一般的ですが、引数で渡す場合は実行環境により異なります。以下は設定例です。

テキストエディタで設定ファイルを編集

# acme-client.conf への記述例
authority sectigo {
api url "https://acme.sectigo.com/v2/OV"
account key "/etc/acme/letsencrypt-privkey.pem"
contact "mailto:admin@example.jp"
eab kid "お客様のAccount ID"
eab hmac "お客様のEAB MAC KEY"
}
acme-clientでのドメイン指定方法は......

GetSSL

configファイルに環境変数として記載をするか、もしくは直接指定します。

環境変数記載例・Bashでの実行例

# account.conf または domain.conf に記述
ACCOUNT_KEYID="お客様のAccount ID"
ACCOUNT_HMAC="お客様のEAB MAC KEY"

# 実行
./getssl -f example.jp

Posh-ACMEはモダンなPowerShellモジュールです。

PowerShellでの実行例

New-PAAccount -ID "お客様のAccount ID" `
-HMAC "お客様のEAB MAC KEY" `
-Server "https://acme.sectigo.com/v2/OV" `
-AcceptTOS

Caddy (Web Server)

OSを問わず「究極に楽」を求めるならもしこれからサーバーを立てる段階であれば、クライアントソフトをインストールすること自体をやめて、「Caddy」というウェブサーバーを使うのが一番楽です。Caddyの設定ファイルCaddyfile 内に記述することで自動で更新まで管理します。
特徴: ACMEクライアント機能がCaddyサーバー本体に内蔵されています
楽な理由 設定ファイルにドメイン名を1行書くだけで、サーバー起動時に勝手に証明書を取得し、更新もすべて全自動で行われます。インストール作業自体が「サーバーを入れるだけ」で完結します。

記述例

example.jp {
tls {
ca https://acme.sectigo.com/v2/OV
eab お客様のAccount ID お客様のEAB MAC KEY
}
}
##※eab お客様のAccount ID と EAB MAC KEYはマイページから取得しお読み替え下さい

Sewer (Python library)

ライブラリとして使用するため、Pythonコード内での指定になります。

Pythonコードの例


import sewer

client = sewer.Client(
domain="example.jp",
dns_class=SewerDnsProviderImpl(),
acme_directory_url="https://acme.sectigo.com/v2/OV",
eab_kid="お客様のAccount ID",
eab_hmac_key="お客様のEAB MAC KEY"
)
# この後 certificate をリクエストします

nginx ACME (lua-resty-acme)

Nginx上でLuaを使用して動作させる場合の設定です。

Nginx

# nginx.conf 内の初期化処理
init_by_lua_block {
require("resty.acme.autossl").init({
endpoint = "https://acme.sectigo.com/v2/OV",
eab_kid = "お客様のAccount ID",
eab_hmac_key = "お客様のEAB MAC KEY",
})
}

node-acme-lambda(Node.js)

AWS Lambdaで動作させる際の環境変数、またはコード内での指定です。

JavaScript

const client = new acme.Client({
directoryUrl: "https://acme.sectigo.com/v2/OV",
accountKey: await acme.crypto.createPrivateKey(),
externalAccountBinding: {
kid: "お客様のAccount ID",
hmacKey: "お客様のEAB MAC KEY"
}
});

win-acme(旧称:letsencrypt-win-simple)

WindowsサーバーやIISを利用している場合、これ以上に簡単なツールはありません。
簡単インストール 公式サイトからZIPをダウンロードして展開するだけです。インストーラーすら不要で、展開したフォルダ中の wacs.exe を実行するだけで動きます。
ポイント 対話形式: 実行するとコマンドプロンプト上で「どのサイトに証明書を入れる?」とメニュー形式で聞いてくれるので、番号を選んでいくだけで設定が完了します。

IIS連携: Windowsの標準ウェブサーバー(IIS)を自動検出し、証明書のバインド(適用)まで自動でやってくれます。

自動更新も自動設定: Windowsの「タスクスケジューラ」に自動更新設定を勝手に登録してくれるため、一度設定すればあとは放置でOKです。

1. 管理者としてコマンドプロンプトを開く

#win-acme(wacs.exe)があるフォルダへ移動し以下のアカウント登録コマンドを実行します


wacs.exe --baseuri "https://acme.sectigo.com/v2/OV" --eab-key-identifier "お客様のAccount ID" --eab-key "お客様のEAB MAC KEY" --accepttos --emailaddress "あなたのメールアドレス"

legoは非常に多くのDNSプロバイダー(100以上)に対応しているのが最大の特徴で 標準的なツール(Certbotなど)などでは対応していないマイナーなDNSサービスや、企業の独自DNS環境で「DNS-01チャレンジ」を使って証明書を発行したいクラウドネイティブな開発者 DockerやKubernetesなどの環境でインフラを構築している人々に好まれています

特徴として: 軽量なコンテナイメージとして配布されているため、自動化パイプライン(CI/CD)の中に組み込んで、インフラ構築のついでに証明書設定も終わらせたい場合に重宝されます。

1.事前準備:SectigoのEAB情報の取得

マイページから、以下の3つの情報を取得しておいてください。
ACME Server URL 例 https://acme.sectigo.com/v2/DV ドメイン認証
例 https://acme.sectigo.com/v2/OV 企業認証
KID (Key ID) EAB用のキーID(お客様のAccount ID)をマイページから取得
HMAC Key EAB用の秘密鍵(お客様のEAB MAC KEY)をマイページから取得

2.各環境別のDNS認証設定(環境変数)

legoは環境変数を読み取ってDNS操作を行います。ご利用のプロバイダーに合わせて、コマンド実行前に以下の変数をエクスポートしてください。

AWS (Route 53)

#IAMポリシーで route53:ChangeResourceRecordSets などの権限が必要です。

export AWS_REGION=ap-northeast-1
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
# (オプション) IAMロールを使用する場合はこれらは不要です


Cloudflare

#最小権限の「APIトークン(Zone.DNS:Edit)」を使用することを推奨します。

export CLOUDFLARE_DNS_API_TOKEN=your-api-token


Azure DNS

#サービスプリンシパルを作成し、対象のDNSゾーンへの「DNS Zone Contributor」権限が必要です。

export AZURE_CLIENT_ID=your-client-id
export AZURE_CLIENT_SECRET=your-client-secret
export AZURE_SUBSCRIPTION_ID=your-subscription-id
export AZURE_TENANT_ID=your-tenant-id
export AZURE_RESOURCE_GROUP=your-resource-group


GCP (Google Cloud DNS)

#サービスアカウントのJSONキーファイルが必要です。

export GCE_PROJECT=your-project-id
export GCE_SERVICE_ACCOUNT_FILE=/path/to/service-account.json

legoコマンドHTTP-01チャレンジでの実行例(bash)

#以下のアカウント登録bashコマンドを実行します

lego --email "your-email@example.com" \
--server "https://acme.sectigo.com/v2/your-endpoint" \
--eab --kid "お客様のAccount ID" --hmac "お客様のEAB MAC KEY" \
--domains "example.com" \
--http \
run

legoコマンドDNS-01チャレンジ(ワイルドカード証明書などの場合)での実行例(bash)

#すべての変数を設定したら、以下のコマンドで証明書を発行します。
#--dns オプションに指定する値(route53, cloudflare, azuredns, gcloud) #をご利用環境に合わせて変更してください。

lego --email "your-email@example.com" \
--server "https://acme.sectigo.com/v2/your-endpoint" \
--eab --kid "お客様のAccount ID" --hmac "お客様のAccount ID" \
--domains "*.example.com" \
--dns route53 \
run

主要なオプション解説

: Sectigoから : :
--server 指定されたACMEエンドポイントURL
--eab 外部アカウントバインディングを有効化
--kid
--hmac
Sectigo発行の資格情報
--dns 使用するプロバイダー名(route53, cloudflare, azuredns, gcloud など)
run 初回取得(更新時は renew)

lego自動更新(Renew)の設定

#以下のコマンドをcronなどで定期実行することで更新が可能

lego --email "your-email@example.com" \
--server "https://acme.sectigo.com/v2/your-endpoint" \
--eab --kid "お客様のAccount ID" --hmac "お客様のEAB MAC KEY" \
--domains "example.com" \
renew

サポートトップへ

CaaSとは

注文・設定方法など

トラブルシューティング

その他