web-dev-qa-db-ja.com

iOS 11に自己署名証明書をインストールする方法

私はスモールオフィスのイントラネットで自己署名証明書を使用していましたが、iOS 11にアップグレードした後、証明書は機能しません。 (Chromeや他のブラウザはそれらに満足しています。)

自己署名ルートCAファイルを取得し、それを.derファイルに変換し、Web経由でiPadにインストールしました。

ipad with cert

しかし、これとは異なり Answer 、[設定]> [全般]> [バージョン情報]> [証明書信頼設定]にルートCA証明書が表示されません。

no cert??

IOSで信頼される証明書に制限はありますか?私のiPhoneとiPadの両方にこの問題があります。手順に問題はありますか?

これらのコードを使用して、CA証明書を作成しました。

openssl genrsa -des3 -out rootCA.key 4096

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt

openssl x509 -in rootCA.crt -out cert.der -outform DER
6
user2101976

[全般]-> [バージョン情報]-> [証明書の信頼設定]に証明書が表示されない場合は、ルートCAがインストールされていない可能性があります。非常に重要-中間CAではなく、ルートCAである必要があります。

これは、opensslを使用して決定するのが非常に簡単です。

$ openssl s_client -showcerts -connect myserver.com:443 </dev/null

これにより、次のような証明書チェーンの証明書の出力が表示されます。

    Certificate chain
     0 s:/C=US/ST=California/L=SAN FRANCISCO/O=mycompany.com, inc./OU=InfraSec/CN=myserver.com
       i:/C=US/O=mycompany.com, inc./CN=mycompany.com Internal CA 1A
    -----BEGIN CERTIFICATE-----
    ....encoded cert in PEM format....
    -----END CERTIFICATE-----

そして、ルートCAまでの一連の証明書を表示する必要があります。 ISSUERを示す「i:」値に注意して、出力を追跡し続けます。最後に、ルートCAにアクセスして、それを.pemファイルにコピーアンドペーストするだけです(BEGIN CERTIFICATEおよびEND CERTIFICATE行を必ず含めてください!)。これで、シミュレータウィンドウにドラッグアンドドロップすることで、シミュレータにインストールできるようになります。

ルートCAがリストにない場合は、出力で最上位を見つけて、Keychain Access.appからエクスポートします。これは、Safari/Chromeを介してWebサイトにアクセスできることを前提としているため、最初にWebサイトを手動で信頼する必要があります。

私の「openssl s_client」の出力は、次のような発行者に表示される最後の証明書で終了しました。

i:/C=US/O=mycompany.com、inc./CN=mycompany.com内部ルートCA 1

Safari/Chromeを介してターゲットWebサイトに正常にアクセスできるので、キーチェーンに保存され、信頼されます。そこで、Spotlight経由でKeychain Access.appを起動し、検索バーに「mycompany」と入力しました。 「mycompany.com Internal Root CA 1」の証明書(Kind = certificate)が表示されました。右クリックして[エクスポート]を選択し、.cerファイルに保存しました。

出来上がり!これで、シミュレータにドラッグアンドドロップできます。ROOTCAがGeneral-> About ...の下に表示され、有効にできます。

何らかの理由でPEMファイルをDER/CERに変換する必要がある場合は、次のコマンドを使用します。

$ openssl x509 -in myfile.pem -out myfile.der -outform DER

これがお役に立てば幸いです。何十回もやらなければならなかったので、忘れないようにメモを書き留める時間だと思いました。

2
DustinB

どうやらiosはCommon Nameのない証明書を好まないので、空でないCNで証明書を再生成すると、ルート証明書リストに表示されます

1
m1r1k

次のコマンドを使用して空中投下するか、その証明書をメールで送信してください。プロンプトが表示されたら、必ずすべての質問に答えてください

openssl genrsa -out privatekey.pem 1024
openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 1825
openssl pkcs12 -export -out public_privatekey.pfx -inkey privatekey.pem -in publickey.cer

このコマンドを使用するまで、同じ問題がありました。なぜこれが起こるのかわかりませんが、コマンドは機能します。乾杯!

0
Andrew Shatnyy