我目前正在为员工部署一个网站来远程使用,并希望确保它是安全的。
我在想是否可以build立某种证书authentication,在那里我会生成一个证书,并将其安装在笔记本电脑上,以便他们可以访问该网站?
我真的不希望他们自己生成证书,因为这很容易出错。
这是多么容易/可能,我该如何去做呢?
你要做的是称为双向SSLauthentication
如何实现它将根据您的Web服务器而有所不同。
Apache指南
签出CAcert :“一个免费向公众发放证书的社区驱动的证书颁发机构”。
tinyca2是一个很好的graphics前端来生成证书。 它是为Debian和Ubuntu Linux发行版打包的。 您将能够为服务器和客户端生成密钥和证书。 它们可以以多种格式输出。 我会build议logging安装您的CA证书的过程以及客户端密钥和证书。 还应包括设置或更改用户在客户端密钥上的密码。
我第二次使用mod-rewrite强制访问https://。
本文涉及为Microsoft Exchange创build证书,但对于任何IIS网站,此过程都是类似的。 希望有所帮助!
哇,如果您使用的是Apache,您可以使用mod_rewrite来强制使用SSL,并且在您的httpd.conf中,您还需要在*:443虚拟主机中使用“SSLVerifyClient require”和“SSLVerifyDepth 4”指令。
对于重写规则,你可以使用这样的东西:
RewriteCond %{HTTPS} !^on$ [NC] RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L]
希望这可以帮助。
与正在使用的authentication或授权机制相比,安全性是一个更大的问题。
大多数安全人员通常采用一些基本原则:
然后将其应用到资产,在您的情况下,一个networking服务器,一个操作系统,并可能是一个Web应用程序和底层数据库 – 真的是业务!
对于上述技术基础设施,我会问你是否已经对每一个应用了适当的安全强化,例如DISA STIG,NSA SRG,CIS指导或供应商安全实践。 之后,我会研究Web应用程序的代码和其他事情。
获得有关证书的具体问题 – 什么是数字证书? 它是一个公钥,embedded到数字证书中,其中有一些字段,通常是x509v3。 数字证书实际上是一个encryption器,它使用解密器(私钥)来validation,签名或执行其他types的事务。
证书一般没有保密性,私钥具有保密性,需要保护。 但是,在操作系统上使用私钥可能意味着它们被暴露并被泄露。 因此,诸如公司和政府之类的高安全性环境通常使用硬件设备来存储私钥,并使得更安全的authentication过程成为可能。
如果你没有为了更安全的环境而这样做,那么软件证书对你来说就足够了。
根据您使用的操作系统,您可能会使用基于证书的自动注册scheme(如SCEP或Microsoft的证书服务)提供一条非常简单的path。
微软的实施很容易遵循http://msdn.microsoft.com/en-us/library/bb643324.aspx ,你可以find其他竞争解决scheme,更容易自动注册PKIs。
您可以通过上面的链接与您的networkingpipe理员分享您的一些需求,并要求他们开始testing。