CA構築 2024

ubuntu 
サーバはj***、digital oceanのvps
Ubuntu

opensslのconfigは /etc/ssl/openssl.cnf

/etc/pki/CA に移動する。
ここで全部やる。

openssl.cnfを /etc/pki/CAにコピーする。

openssl.cnfを編集

[ CA_default ]
dir             = .            # Where everything is kept
private_key     = $dir/cakey.pem # The private key

[ req_distinguished_name ]
国とかcityとかのデフォルト値を入れておく


v3_ca
というファイルを作って下記を記載し、署名時に使う
(opnessl.cnfの[v3_ca]セクションに書いたら行けると思ったがだめだったので)
 
basicConstraints = critical, CA:true
keyUsage = critical, cRLSign, keyCertSign
subjectKeyIdentifier=hash


#これをやっておく

touch index.txt
echo 00 > serial

#ca証明書のcsr発行

 openssl req -new -key ./cakey.pem -out ./ca.csr

※openssl.cnfにkeyの場所を書いたつもりだが効かないので指定した
なぜ効かないとわかったかというとパスワードを聞かれたから


#CA証明書のCSRにサイン

openssl ca -in ca.csr -selfsign \
-notext -config openssl.cnf -outdir . \
-extfile v3_ca -out cacert.pem\
-startdate 241101000000Z -enddate 251031235959Z

いつもつけていなかったが、-notextを指定すると読める情報が書かれない(あっても問題ない)

-extfile v3_ca がさっきのCA情報

これもいつもやらないが、-startdate -enddateを明示的に指定。
指定しないと作った時間になって切りが悪いのでこっちの方がいい。

openssl x509 -in cacert.pem -text

中身を確認

 Version: 3 であること

下記があること

 X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign

※この後別のcentos9のサーバでCA証明書を作ったが上記オプションがなくても問題なく使えた。

#iPhoneにCA証明書をインストール

証明書をテキストにコピーし、拡張子.crt (.pemでもいいはず)にして
メールでiPhoneに送る。

証明書をiPhoneにダウンロードして開き、インストールする。
(私はapple watchを使っているので、iphoneとapplewatchのどちらにインストールするかと聞かれた)

※私はiPhoneの言語を英語に設定している

すると、Settings > General > VPN & Device Management の、
DOWNLOADED PROFILE に表示されるのでタップして開くと、Not Verified と表示されている。
中身を見て、「Certificate Authority」がYesになっていること
Versionが3であること
を確認

最初に戻って、右上のInstallをタップ

ここで終わりではない。

General > About > Certificate Trust Settings > ENABLE FULL TRUST FOR ROOT CETIFICATES
で、インストールした証明書を信頼する。