私はウェブサイトを持っていますが、許可されたクライアント/ブラウザだけがアクセスできるようにしたいと思っています(例:証明書付き)。
ユーザーがアクセスできるのは、オフィスのコンピューター(地理的に異なる場所にあり、会社も異なるため、IPを確認したり、手動でインストールしたりすることはできません)のWebページのみです。
インストール可能な秘密鍵証明書などを考えていました。
どのような選択肢がありますか?
編集:
PHPを使用しています
この別の答えには、クライアント側の証明書を使用する非常に興味深いユースケースがあります。
BBC Webサイトが常に個人証明書を要求するのはなぜですか。また、それを譲渡しないようにするにはどうすればよいですか?
VPNを実装し、問題の領域をPHPからシステム管理に移すこともできます。これは、将来、アクセスを許可する必要がない場合に役立ちます。 Webサイトだけでなく、共有フォルダなどの他のリソースにも.
それは長い話です、コメントできないので、ここにリンクを残してください PHPでのSSLクライアント証明書の使用
また、Apacheを確認することもできます SSLRequire Directive ちょっとした話かもしれません
またPHP OpenSSLモジュールphp.net/openssl
その質問の周りにたくさんのもの
サーバーでは、各HTTPリクエストのヘッダー(User-Agent
ヘッダー(あなたの場合)と、ブラウザーを使用できない理由と、どのブラウザーareがサポートされているかを説明するランディングページにリダイレクトします。
無許可のクライアントからのリクエストを検証するには、authenticationの形式をインストールする必要があります。各クライアントにX.509証明書をインストールすることはオプションの場合もありますが、確かにメンテナンスの問題のように聞こえます。さまざまなソリューションが存在するサインイン機能を提供することで、より良い結果が得られるでしょう。
Webブラウザー(ユーザーエージェント)へのアクセスを制限することは、改ざんデータなどのツールを使用して非常に簡単に操作できるものです。ヘッダーを変更して、要求が任意のブラウザーからのものであるように見せることができます。彼らがオフィスからのみウェブサイトにアクセスできることを確認したい場合(これが1つの場所である場合)、IPアドレスに基づいてアクセスを制限できます。それ以外の場合は、クライアントに証明書をインストールして証明書を確認するようなシナリオを使用する必要があると思います。
SSLをセットアップして、独自の証明書を作成できます。クライアントが承認した証明書のようなものを作成するオプションがあると思います。つまり、証明書のクライアント部分をクライアント(ブラウザー)にインストールする必要があります。クライアントにこれがインストールされていない場合、機能しません。
正直なところ、これは先週読んだことですが、その前にそれが存在することを知りませんでした。現在、それを見つけることができず、別の名前で呼ばれている可能性があります。
ここではシンテリックキー暗号化を探しています。両方のキーは秘密にしておく必要があります。これは、システムのアプリケーションレベルで実行できます。
次にアルゴリズムの例を示します。
Diffie-Hellman
_を使用)sent_challenge = encrypt(k1,challenge)
を計算し、各クライアントのIDとともにキューに追加しますrecv_challenge = decrypt(k1,sent_challenge)
によってチャレンジを計算します。sent_challenge ?= recv_challenge
_を比較します注:_k1
_接続クライアントのキーです
CookieをランダムなGUIDに設定する「サインアップ」ページを作成します。他のページで、Cookieの値を確認してください。現在、認証プロセスは、承認データベースに「適切な」GUIDを追加するだけです。
正確な詳細は簡単に調整できます。たとえば、ユーザーに所属を入力させ、データベースにGUIDを追加する前にこれを手動で確認できます。または、電子メールでGUID 、そしてサインアップページは、入力されたGUID=をCookie値として設定するだけです。
利点は、各PCにアクセスする代わりに、1つのPCから手動プロセスを実行できることです。