これを書いている時点ではAzure DevOps ServerはRC2が公開されていますが、TFS2017以降はWebサイトはSSLを推奨していることと、Chromeがhttpのサイトをエラーにするようになったので、自己署名証明書とWebサーバ証明書を作成して、Webサイトのhttps化に対応してみました。
よく見かけるのはActive Directory証明書サービス(AD CS)で作成する方法ですが、Chrome 58以降で証明書のCommonName(CN)を参照せず、X.509 v3のSubjectAltName(SAN)を参照するようになったので、単純には適用できなくなりました。PowerShellのNew-SelfSignedCertificateを使うことで対応できますが、今回はOpenSSLを使って、自己署名証明書(オレオレ証明書)とWebサーバ証明書を作成してみます。(恐らくですが、OpenSSLであればWindows 10で構築するときにも使えるはずです。)
検証環境はこんな感じです。
- Windows Server 2019(1809/17763.316)
- Azure DevOps Server RC2
- OpenSSL v1.1.1a Light
Windows ServerとAzure DevOps ServerのインストールとAzure DevOps Serverの構成ウィザードは先に済ませます。
OpenSSLのインストールは普通に行ってください(「C:\Program Files\OpenSSL-Win64」にインストールされると思います)。
管理者権限で起動したコマンドプロンプトで以下の作業を行います。
1.環境変数PATHにopenssl.exeのパスを追加
OS環境変数に登録してもいいんですが、opensslコマンドがいつでもどこでも使えるのは若干気が引けるので、ここでは「set PATH=%PATH%;”C:\Program Files\OpenSSL-Win64\bin”」で一時的にパスを追加することにしておきます。
2.作業フォルダの作成
「C:\ManageCert」をベースの作業フォルダとし、サブフォルダとして「certs」「crl」「newcerts」「private」を作成します。
cd /d C:\ManageCert md certs md crl md newcerts md private
3.認証局で使用するファイルの作成
echo 01 > serial copy nul index.txt echo unique_subject=yes > index.txt.attr
4.openssl.cnfの変更
「C:\Program Files\Common Files\SSL\openssl.cnf」のCA_defaultセクションにある「dir」に対して、「C:\\ManageCert」を指定します。
※「C:\ManageCert」では円記号がエスケープされないのでエラーになります。
長くなったので続きます。