Mengakses aplikasi pada hos yang ditentukan pengguna melalui HTTPS ialah keperluan biasa, tetapi anda mungkin mengalami kekeliruan dalam aplikasi praktikal. Untuk masalah ini, editor PHP Banana berpendapat kami harus cuba membantu dengan mencari FQDN. FQDN (Nama Domain Layak Penuh) ialah nama domain yang layak sepenuhnya, termasuk nama hos dan nama domain. Dengan mencari FQDN, anda boleh memastikan bahawa hos yang ditentukan oleh pengguna terletak dengan tepat, dengan itu memberikan bantuan dan perkhidmatan yang tepat. Oleh itu, mencari FQDN ialah strategi yang bermanfaat apabila membuat akses HTTPS.
Saya menggunakan aplikasi golang yang berkomunikasi dengan pelayan melalui HTTPS pada hos lain. Khususnya, jika konteks penting: Berkomunikasi dengan gugusan Dataproc daripada tika GCE dalam projek Google Cloud yang sama (tiada persediaan domain khas diperlukan).
Pelayan menjana sijil yang ditandatangani sendiri, yang telah saya pasang secara manual pada klien.
Kedua-dua pelayan dan pelanggan ialah tika GCE pada projek Google Cloud saya (FQDN mereka ialah <hostname>.c.<project_id>.internal
)
Jika saya cuba menyambung ke pelayan daripada klien menggunakan http.Client golang, saya mendapat ralat seperti ini:
failed to verify certificate: x509: certificate is valid for *.c.<project_id>.internal, not <server_hostname>
Tetapi jika saya luluskan FQDNnya (<server_hostname>.c.<project_id>.internal
) ia berfungsi di luar kotak.
FYI, tingkah laku ini konsisten dengan apa yang saya lihat semasa menjalankan cURL:
curl: (60) SSL: no alternative certificate subject name matches target host name '<server_hostname>'
Jadi soalan saya ialah:
*.c.<project_id>.internal
dan ia berfungsi di luar kotak, bukan? Atau adakah ia sentiasa memerlukan rentetan yang diluluskan digunakan untuk benar-benar sepadan dengan rentetan kad bebas (bermaksud ia tidak melakukan carian dan hanya berfungsi jika anda lulus dalam fqdn)? NOTA: Saya tidak mahu melangkau pengesahan - saya hanya mahu memahami dengan lebih baik perkara yang sedang berlaku dan mengetahui amalan terbaik di sini.
Terima kasih!
<server_hostname>
dan <server_hostname>
和 <server_hostname>.c.<project_id>.internal
menyelesaikan kepada kandungan yang sama, sijil hanya mengandungi yang kedua (atau wildcard it perlawanan). Oleh kerana ini dijana sendiri, anda boleh menambah nama pendek di dalamnya sebagai SAN (Nama Alternatif Subjek).
Bendera tambahan untuk OpenSSL: -addext "subjectAltName = DNS:localhost,DNS:<server_hostname>"
CA awam tidak mungkin memberikan anda sijil SAN yang tidak boleh diselesaikan secara terbuka. (Beberapa kemungkinan, saya belum mencubanya)
Sebagai contoh, anda tidak mahu bermula dari google.com.someevildomain.org
提供或信任 google.com
jadi ini adalah ciri keselamatan.
Atas ialah kandungan terperinci Adakah aplikasi yang mengakses hos yang ditentukan pengguna melalui HTTPS cuba memberikan bantuan dengan mencari FQDNnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!