demo.teppi.netの証明書を、HTTP01チャレンジで更新する方法
LetsEncryptを使う場合のシミュレーションをしてみます。(※実は、demo.teppi.netの証明書は *.teppi.net のワイルドカード証明書ですが。Let's Encryptも試してみました)

必要なネットワーク・OS要件

WinACMEを動かすマシン(例ではdemo.teppi.net)から、 demo.teppi.netに関してDNS LookupとHTTPSアクセスができること。(LAN内DNSサーバがある場合、バイパスしてインターネットDNSにアクセスするようにします。方法については以前の記事に記しました)

WinACMEのインストール・使い方については、前の記事([FileBlogSSL6] WinACMEを呼び出すPowerShellスクリプト例)を先に読んでください。(下記の例では、初回登録方法についてのみ記し、二回目以降の更新、スケジュール作成については省略します)

Let's Encryptを使うためにDNS登録

DNSに Let's encryptを使うことを宣言させる必要がある

CAAレコードをDNSに登録すると、そこにあるホスト以外に証明書発行をさせないようにできる。
LetsEncryptはCAAレコードの存在を必須とするので、この行の登録が必要

demo.teppi.net. CAA 0 issue "letsencrypt.org"

WinACME設定スクリプト

WinACMEは、wacs.exeを起動すると対話的に設定画面が出てくるが、これは主にLet's Encrypt User向けで、自前のパラメータを設定するならCLIのほうが早い。

PowerShellスクリプトを作成

C:\WinACME\Scripts\install-demoteppinet.ps1 (初回登録用スクリプト)
C:\WinACME\Scripts\post-demoteppinet.ps1 (新しい証明書更新後実行される)

初回登録用スクリプト install-demoteppinet.ps2 に、下記のように書いて実行する。

HTTP-01チャレンジを通すため
$WebRootPath = "D:\FileBlog5Data\Config\Htdocs\root",
は、FileBlog5のデータフォルダに応じて設定してください。
C:¥ProgramData¥FileBlog5¥Config¥Htdocs¥root など、FileBlog5のデータフォルダ以下の「/Config/Htdocs/root」を指定します。

install-demoteppinet.ps1
 param(
    [string]$WacsPath = "C:\Program Files\WinACME\wacs.exe",

    # Lets Encrypt ACME
    [string]$AcmeDirectoryUrl = "https://acme-v02.api.letsencrypt.org/",
    [string]$Email = "okd@teppi.com",

    # 証明書対象
    [string]$Hosts = "demo.teppi.net",
    [string]$CommonName = "demo.teppi.net",
    [string]$FriendlyName = "demo-teppi-net",

    #Validation
    [string]$WebRootPath = "D:\FileBlog5Data\Config\Htdocs\root",

    # 出力
    [string]$PemFilesPath = "C:\WinACME\Certs",
    [string]$PemFilesName = "activation-online",

    [string]$PostInstallScript = "C:\WinACME\Scripts\post-install-demoteppinet.ps1"
)

$ErrorActionPreference = "Stop"

if (!(Test-Path $WacsPath)) {
    throw "wacs.exe が見つかりません: $WacsPath"
}

if (!(Test-Path $PemFilesPath)) {
    New-Item -ItemType Directory -Path $PemFilesPath -Force | Out-Null
}

$arguments = @(
    "--baseuri", $AcmeDirectoryUrl,

    "--source", "manual",
    "--host", $Hosts,
    "--commonname", $CommonName,
    "--friendlyname", $FriendlyName,
    "--id", $FriendlyName,

    "--validation", "filesystem",
    "--validationmode", "http-01",
    "--webroot", $WebRootPath,

    "--store", "pemfiles",
    "--pemfilespath", $PemFilesPath,
    "--pemfilesname", $PemFilesName,

    "--installation", "script",
    "--script",$PostInstallScript,
    "--scriptparameters", " `"{CertCommonName}`"",

    "--accepttos",
    "--emailaddress", $Email,

    "--verbose",
    "--notaskscheduler"

)

Write-Host "Creating LetsEncrypt renewal with Http01 validation..."
& $WacsPath @arguments

if ($LASTEXITCODE -ne 0) {
    throw "wacs 実行失敗。ExitCode=$LASTEXITCODE"
}

Write-Host "完了:LetsEncrypt用 renewal を作成しました。"

初回実行をしてみる。

PS C:\winACME> .\install-demoteppinet.ps1

アウトプットはC:\WinACME\Certsにできる

SSL証明書自動更新関連コンテンツ
2026年8月31日FileBlog「DEEP」技術コラム

[FileBlogSSL1] SSL証明書の有効期間短縮 - 自動更新 への対応についてNew!!

2026年8月31日FileBlog「DEEP」技術コラム

[FileBlogSSL2] 自己署名認証局によるイントラネット証明書運用New!!

2026年8月31日FileBlog「DEEP」技術コラム

[FileBlogSSL3] SSL証明書自動配布インフラの作り方New!!

2026年8月31日FileBlog「DEEP」技術コラム

[FileBlogSSL4] 証明書発行自動化のための key(s)の入手/DigiCertの場合New!!

2026年8月31日FileBlog「DEEP」技術コラム

[FileBlogSSL5] AWS Route53でDNS-01チャレンジに応答するための準備New!!

2026年8月31日FileBlog「DEEP」技術コラム

[FileBlogSSL6] WinACMEを呼び出すPowerShellスクリプト例New!!

2026年8月31日FileBlog「DEEP」技術コラム

[FileBlogSSL7] SSL証明書更新の自動化/LetsEncryptの場合New!!

ご質問・ご相談はお気軽にお問い合わせください