Pertanyaan Mengizinkan pengguna masuk dari alamat IP tanpa autentikasi klien sertifikat


Saya perlu mengizinkan akses ke situs saya tanpa sertifikat SSL dari jaringan kantor saya dan dengan sertifikat SSL di luar.

Berikut ini konfigurasi saya:

 <Directory /srv/www>
  AllowOverride All

  Order deny,allow
  Deny from all
  # office network static IP
  Allow from xxx.xxx.xxx.xxx

  SSLVerifyClient require
  SSLOptions +FakeBasicAuth
  AuthName "My secure area"
  AuthType Basic
  AuthUserFile /etc/httpd/ssl/index
  Require valid-user
  Satisfy Any

 </Directory>

Ketika saya di dalam jaringan dan memiliki sertifikat - saya dapat mengakses. Ketika saya di dalam jaringan dan belum memiliki sertifikat - saya tidak dapat mengakses, itu membutuhkan sertifikat.

Ketika saya berada di luar jaringan dan memiliki sertifikat - saya tidak dapat mengakses, ini menunjukkan kepada saya layar masuk dasar Ketika saya berada di luar jaringan dan tidak memiliki sertifikat - saya tidak dapat mengakses, ini menunjukkan kepada saya layar masuk dasar

dan konfigurasi berikut berfungsi dengan sempurna

 <Directory /srv/www>
  AllowOverride All

  Order deny,allow
  Deny from all
  Allow from xxx.xxx.xxx.xxx

  AuthUserFile /srv/www/htpasswd
  AuthName "Restricted Access"
  AuthType Basic
  Require valid-user
  Satisfy Any

 </Directory>

5
2017-07-27 14:42






Jawaban:


Berikut adalah cara saya menerapkannya (xxx.xxx.xxx.xxx - izinkan akses untuk alamat ini tanpa sertifikat):

  SSLVerifyClient optional
  SSLOptions -FakeBasicAuth +StrictRequire -StdEnvVars -ExportCertData
  SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128

  RewriteEngine on
  RewriteCond %{SSL:SSL_CLIENT_VERIFY} !^SUCCESS$
  RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx$
  RewriteRule   ^  -  [F]

Perhatikan bahwa SSLVerifyClient TIDAK harus dalam konteks direktori:

Dalam konteks per-direktori itu memaksa renegosiasi SSL dengan   tingkat verifikasi klien dikonfigurasi ulang setelah permintaan HTTP dibaca   tetapi sebelum respons HTTP dikirim.


8
2017-08-31 14:53



Terima kasih banyak karena telah kembali untuk memberikan jawabannya. Bisakah Anda menerima jawaban Anda sendiri, silakan?
Ok, saya berpikir bahwa saya seharusnya tidak menerima jawaban saya karena dapat diperlakukan sebagai curang peringkat - John
Saya tidak yakin jika Anda memperoleh poin ketika Anda menerima jawaban Anda sendiri. Namun menandai pertanyaan seperti yang dijawab adalah penting karena tidak muncul dalam jawaban yang tidak terjawab lagi.


Agaknya, di dalam jaringan Anda, server memiliki IP (internal, pribadi) yang berbeda daripada saat diakses dari luar.

Dalam hal ini, akan lebih mudah untuk mengatur dua vhost - satu di in.ter.nal.ip: 443, dan satu di ex.ter.nal.ip: 443.

Wajibkan sertifikat klien hanya di vhost eksternal.


1
2017-07-27 14:56



server tidak ada di jaringan kantor saya - John


Saya terkejut menemukan ini bekerja di Apache 2.4:

<LocationMatch "^/some/secure/place">
    <If "! -R 'xxx.xxx.xxx.xxx/32'">
            SSLRequireSSL
            SSLVerifyClient require
            ...etc
    </If>
</LocationMatch>

0
2018-03-13 08:10