如何给JSP服务器Resin加上SSL认证
为最佳JSP服务器Resin加上SSL认证
Resin主要是作为WEB服务器的jsp/servlets运行平台。它支持许多WEB服务器软件,而且是完全免费的,并提供了对SUN的J2EE的支持,这要比其它相关的java和javascript开发和运行平台要好的多,而且速度非常快,并提供服务器端直接开发、编译和运行。因此,Resin受到了许多应用JSP的WEB站点的支持。
一、 在WEB服务器中使用OpenSSL套件
1、安装OpenSSL
想要Resin可以响应SSL请求,我们就必需保证WEB服务器上已经安装好了相关的SSL套件。对于中小企业来说,开源免费的OpenSSL提供与SSL相同的认证功能。
OpenSSL的Linux版本可以在wwwopensslorg网站上下载。现在它的最新版本是OpenSSL 098j。
Resin通过它的libexec/libresinsslso JNI库文件提供对OpenSSL的支持。如果是在类Linux系统下使用OpenSSL,在安装时可以通过下列命令将它安装到指定的位置:
/configure --with-openssl=/usr/local/ssl
如果我们是在Windows系统中使用Resin,那么,我们同样需要在此操作系统下先安装好OpenSSL。Windows下的OpenSSL在wwwslprowebcom/products/Win32OpenSSLhtml下载,它的最新安装文件是Win32OpenSSL-0_9_8jexe,其大小为7MB左右。
在Windows系统下,Resin的resinssldll文件中包含提供对OpenSSL支持的代码。(在Resin30以前的版本是通过resindll文件提供支持的。)因此,在Windows系统下只需要安装好OpenSSL就可以让Resin使用它了。OpenSSL在Windows系统下很容易安装,就如同安装其它的应用程序一样简单。
不过,在Windows系统下安装完OpenSSL后,还应当将一些需要的DLL文件复制到Resin的根目录当中。现在假设Resin安装在c:\resin-321目录,OpenSSL安装在c:\Program Files\GnuWin32目录。现在打开系统开始菜单的“运行”对话框,在运行框中输入CMD命令,回车后进入命令行终端界面。然后在命令行终端下就可以通过下列所示的命令将OpenSSL安装目录下的相关文件复制到Resin的根目录下:
cd resin-321
copy c:\Program Files\GnuWin32\bin\libssl32dll c:\resin-321\libssl32dll
copy c:\Program Files\GnuWin32\bin\libeay32dll c:\resin-321\libeay32dll
2、生成SSL认证私钥
SSL认证的密钥由OpenSSL来生成,生成后的密钥应当保存到相应的Resin目录中。因此,在生成密钥前,我们可以在Resin根目录中创建一个keys子目录用来保存将要创建的密钥。在类Linux系统下,我们可以通过下列方式来创建keys目录:
cd /resin
mkdir keys
在Windows系统下,我们可以在资源管理器中直接在Resin根目录下创建一个新文件夹,并命名为keys即可。
在生成密钥时,OpenSSL会根据其配置文件中设置的内容来生成。在类Linux系统下,这个缺省的配置文件可能在usr/ssl/opensslcnf或/usr/share/ssl/opensslcnf下。而Windows系统中不存在这样的文件。
当然,我们还可以自己创建一个相应的配置文件保存到Resin/keys/目录下。这样,在创建密钥时,OpenSSL也会根据这个配置文件中的内容来创建,而且,在创建密钥时不会要求我们根据提示输入缺省的相关信息了。
下面是一个opensslcnf配置文件的相关内容实例:
[ req ]
default_bits = 1024 #在这里填入加密键的缺省位数
distinguished_name = req的名称
[ req_distinguished_name ]
C = 在这里填入国家的代码,例如CN,代表中国
C_default =
ST = 这里填写州或省名称
ST_default =
L = 城市
L_default =
O = 企业或机构名称
O_default =
OU = 组织中某个部门的名称,例如市场部
OU_default =
CN = 我们的网站域名,必需是全名,例如wwwmywebcom
CN_default =
emailAddress = 联系的E-Mail邮箱地址
emailAddress_default =
完成OpenSSL配置文件的相关设置后,我们就可以开始为SSL认证创建一个私钥。在WEB服务器上创建私钥时,会要求我们输入相应的密码,这个密码将会在我们使用创建的私钥时要求被输入。因此要牢记这个密码并妥善地保管它。我们还必需将这个密码加入到Resin的配置文件当中。
在类Linux系统下创建私钥时,私钥的文件名可以由我们自己决定,可以通过下列所示命令来完成:
openssl genrsa -des3 -out myprikeykey 1024
在Windows系统下创建私钥。得先进入命令行终端界面,然后用CD命令切换到OpenSSL安装目录,再用下列命令产生私钥;
c:\Program Files\GnuWin32\bin\opensslexe genrsa -des3 -out myprikeykey 1024
二、 创建或申请SSL证书:
为了能够加密与用户的会话数据,我们还必需为SSL认证创建或申请一个公钥证书。这个公钥证书在使用时会由Resin发送给用户的浏览器,以便浏览器能够加密其发送的数据。公钥证书可以由OPENSSL产生一个自签名证书,也可以到第三方SSL证书颁发机构申请一个公钥证书。要注意的是,自签名证书将不能被其浏览器所承认。
1、创建一个自签名证书
当我们只是用来测试WEB服务器的SSL安全连接,或者只是作为企业远程办公之用时,那么创建一个自签名证书将会为我们节省一笔小钱。但是,对于这样的自签证书,WEB浏览器是不会承认的,还会为此弹出一个警告框来提醒用户这个证书不是一个公认的SSL证书。不过,用户浏览器与WEB服务器之间的会话数据仍然是被SSL加密了的。
在类Linux系统下创建自签名证书,可以使用下列命令来完成:
openssl req -config /opensslcnf -new -key myprikeykey -x509 -out myselfcrt
在Windows系统下创建自签名证书,在字符终端用CD命令进入OpenSSL安装目录后,可以通过下列命令完成:
c:\Program Files\GnuWin32\bin\opensslexe req -config /opensslcnf -new -key myprikeykey -x509 -out myselfcrt
其中,自签名证书的名称可以由我们自己决定,例在本例中为myselfcrt,而“-key”参数后带的键文件是在上面我们创建的私钥文件,而命令中的“/opensslcnf”表示当前目录下的OpenSSL的配置文件。
如果我们没有按前文所述方式生成一个OpenSSL配置文件,或者没有修改此配置文件中的缺少配置值,那么在创建过程中会要求我们提供一些基本的与WEB服务器相关的身份资料,例如企业名称和网站域名等信息。
2、创建一个证书请求文件
如果要使用第三方证书颁发机构上的证书,那么就必需先创建一个证书请求文件(CSR)。这个证书请求文件中包含有证书的公钥、企业名称、加密位数、地址和网站域名等信息。
当我们在第三方证书颁发机构上申请证书时,就会要求我们提交这个证书请求文件,然后,证书颁发机构才能将SSL证书颁发给我们。现在提供SSL证书的机构有许多,例如VeriSign公司就是其中最著名的代表。在生成证书请求文件时一定要注意,我们使用什么样的WEB服务器软件,就必需生成与它相兼容的证书请求文件,这样,SSL证书颁发机构颁发给我们的证书才能在此WEB服务器下使用。
在Linux系统下生成证书请求文件,可以使用下列命令达到目的:
openssl req -new -config /opensslcnf -key myprikeykey -out myprikeycsr
在Windows系统下生成证书请求文件,在命令行界面中通过CD命令进入OpenSSL安装目录后,通过下列命令来完成证书请求文件的生成:
c:\Program Files\GnuWin32\bin\opensslexe req -new -config /opensslcnf -key myprikeykey –out myprikeycsr
证书请求文件的文件名可以由我们自己来决定,在本文中为myprikeycsr。在生成证书请求文件过程中会要求我们输入一些与WEB服务器身份相关的信息,例如网站域名和企业名称等。我们必需按要求如实填写。
当我们成功注册,并支付相应的年使用费之后,这些证书颁发机构就会将SSL证书发送到我们填写的电子邮箱当中。
三、 配置Resin使用私钥和SSL证书
要想Resin能够使用SSL认证,我们还必需对其配置文件resinconf做相应的设置。具体要配置的内容包括:
keys/ myselfcrt
keys/ myprikeykey
mypassword
其中,中的内容表示SSL连接使用的默认端口号,如果没有特别要求,可以保持默认。和之间的内容填入Resin可以使用的SSL认证公钥,在这里为myselfcrt。和之间的内容填入Resin可以使用的私钥,在本文中为myprikeykey。至于和之间就是填入我们在创建私钥时设置的密码。
四、 测试Resin的SSL加密连接
当我们配置好Resin的SSL认证后,我们还可以通过一些方式来检验我们的配置是否正确。
在Windows系统下,我们就可以通过在WEB浏览器地址栏中输入https://URL(企业网站的域名)的方式,来验证WEB服务器是否对这样的URL地址做出正确响应。如果返回正常的内容,并且在WEB浏览器地址栏中显示出一个挂锁的标志,那么,Resin的SSL配置就算成功了。
在Linux系统下,除了可以上述方式来检验外,还可以通过下列方式来验证:
openssl s_client -connect wwwmywebcom:443 –prexit
另外,我们还可以通过下列的JSP脚本来快速验证Resin是否对SSL做出反应:
Secure <%= requestisSecure() %>
经过上述的检验操作后,如果都能得到WEB服务器的正确响应,那么就说明Resin已经能够提供对SSL技术的支持了。
也就是说,当用户通过WEB浏览器向WEB服务器发送一个SSL请求时,Resin就会为这个WEB浏览器提供SSL认证的公共密钥,然后,这个WEB浏览器就可以使用这个公共密钥来加密数据,而Resin将使用WEB服务器的SSL私钥对加密的数据进行解密。
优雅的绕过校园网认证实现免费上网的具体步骤如下:
1、初步分析认证过程
所有认证服务都在校内某个认证服务器上,chrome开发者工具查看认证发的包,post到了auth_actionphp,同时带了一个cookie。
2、继续分析认证交互
实践过程中我发现由于周围ap很多,station也很多,sniff的时候只能抓到一次认证的“只言片语”。大多数情况下也就是一次认证的某一个http数据包,所以开始考虑还有没有别的方法可以拿到password。
3、记住密码
上面第一个图可以看到有一个记住密码按钮,但点上去的时候浏览器没有任何提示。如果打上了对勾,下次访问认证页面用户名密码都是填好的。换一个浏览器就不会出现用户名和密码。所以猜测用户名和密码可能隐藏在cookie里。cookie大概长一下这个样子:
“login=bQ0pOyR6IXU7PJaQQqRAcBPxGAvxAcroYpuUwed%252BRbnyPYVrHGh7s%252FPoYr7fCjTjj%252FswD1WO61LAXLEfAnB6rfKMTMSqTA8Se6EnzfFjzP9eeD9NFR8hcJNnEXPrncV1qHlKsOS7DSZxdJpsAjtG0IgBL%252BaYiPbwi%252BQrXyaCJs88HzHwF91Vn5cSIjnNeER8blZ0frc%253D”。
4、问问服务器
当我把cookie删除,刷新页面,用户名和密码都会消失。再把cookie改回来,用户名和密码就会出现。所以认证服务器肯定根据cookie返回了我的用户名和密码。用requests进行验证。
5、最后考虑哪里还有cookie
用户post出去的请求会带有cookie,但是密码已经在里面了。用户get请求网页的内容和文件等会带有cookie。当用户认证成功时,服务器返回带set-cookie的header中包含有cookie。
OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth20是OAuth协议的延续版本,但不向后兼容OAuth
10即完全废止了OAuth10。
第三方应用授权登录:在APP或者网页接入一些第三方应用时,时长会需要用户登录另一个合作平台,比如QQ,微博,微信的授权登录。
原生app授权:app登录请求后台接口,为了安全认证,所有请求都带token信息,如果登录验证、请求后台数据。
前后端分离单页面应用(spa):前后端分离框架,前端请求后台数据,需要进行oauth2安全认证,比如使用vue、react后者h5开发的app。
3名词定义
(1) Third-party application:第三方应用程序,本文中又称"客户端"(client),比如打开知乎,使用第三方登录,选择qq登录,这时候知乎就是客户端。
(2)HTTP service:HTTP服务提供商,本文中简称"服务提供商",即上例的qq。
(3)Resource Owner:资源所有者,本文中又称"用户"(user),即登录用户。
(4)User Agent:用户代理,本文中就是指浏览器。
(5)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。
(6)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。
第一步:用户访问页面时,重定向到认证服务器。
第二步:认证服务器给用户一个认证页面,等待用户授权。
第三步:用户授权,认证服务器想应用页面返回Token
第四步:验证Token,访问真正的资源页面
第一步:用户访问页面
第二步:访问的页面将请求重定向到认证服务器
第三步:认证服务器向用户展示授权页面,等待用户授权
第四步:用户授权,认证服务器生成一个code和带上client_id发送给应用服务器 然后,应用服务器拿到code,并用client_id去后台查询对应的client_secret
第五步:将code、client_id、client_secret传给认证服务器换取access_token和 refresh_token
第六步:将access_token和refresh_token传给应用服务器
第七步:验证token,访问真正的资源页面
第一步:用户访问用页面时,输入第三方认证所需要的信息(QQ/微信账号密码)
第二步:应用页面那种这个信息去认证服务器授权
第三步:认证服务器授权通过,拿到token,访问真正的资源页面
优点:不需要多次请求转发,额外开销,同时可以获取更多的用户信息。(都拿到账号密码了)
缺点:局限性,认证服务器和应用方必须有超高的信赖。(比如亲兄弟?)
应用场景:自家公司搭建的认证服务器
第一步:用户访问应用客户端
第二步:通过客户端定义的验证方法,拿到token,无需授权
第三步:访问资源服务器A
第四步:拿到一次token就可以畅通无阻的访问其他的资源页面。
这是一种最简单的模式,只要client请求,我们就将AccessToken发送给它。这种模式是最方便但最不安全的模式。因此这就要求我们对client完全的信任,而client本身也是安全的。
因此这种模式一般用来提供给我们完全信任的服务器端服务。在这个过程中不需要用户的参与。
当架设完一台Radius认证服务器后,如果没有用于Radius认证的设备来做测试,就不知道Radius是否架设成功。这时可以使用NTRadPing来测试架设的Radius是否可用。
RADIUS是英文(Remote Authentication Dial In User Service)的缩写,是网络远程接入设备的客户和包含用户认证与配置信息的服务器之间信息交换的标准客户/服务器模式。它包含有关用户的专门简档,如:用户名、接入口令、接入权限等。这是保持远程接入网络的集中认证、授权、记费和审查的得到接受的标准。
RADIUS认证系统包含三个方面:认证部分、客户协议以及记费部分,其中:
RADIUS 认证部分一般安装在网络中的某台服务器上,即RADIUS认证服务器;
客户协议运行在远程接入设备上,如:远程接入服务器或者路由器。这些RADIUS客户把认证请求发送给RADIUS认证服务器,并按照服务器发回的响应做出行动;
RADIUS记费部分收集统计数据,并可以生成有关与网络建立的拨入会话的报告。
目前还没有证书服务器的说法,您这边应该是想表示SSL证书的作用是什么吧。
什么是 SSL 证书
SSL 全称为“Secure Sockets Layer”,中文译为“安全套接层”,是遵守 SSL 安全套接层协议的数字证书,为网络通信提供安全及数据完整性的一种安全协议。
安全套接层,顾名思义是在 TCP 上提供的安全套接字层。其位于应用层和传输层之间,应用层数据不再直接传递给传输层而是传递给 SSL 层,SSL 层对从应用层收到的数据进行加密,利用数据加密、身份验证和消息完整性验证机制,为网络上数据的传输提供安全性保证。HTTPS 便是指 Hyper Text Transfer Protocol over SecureSocket Layer。
SSL证书的作用分析:
1、网站实现加密传输,加强隐私安全保护
网站没安装SSL证书的话,是以http协议来访问的,浏览器和服务器之间是明文传输,这意味着用户填写的账户信息、交易记录等隐私信息都是明文,存在被泄露、窃取及篡改的风险,容易被恶意攻击,给用户带来损失。
2、认证服务器真实身份,防止钓鱼网站仿冒
网站部署全球信任的SSL证书后,浏览器内置安全机制,实时查验证书状态,通过浏览器向用户展示网站认证信息,让用户轻松识别网站真实身份,防止钓鱼网站仿冒。
3、有利于提高网站搜索排名及收录
现在各个主流浏览器会优先收录以https开头的网站,即安装了SSL证书的网站,例如百度、谷歌等浏览器对https网站比较友好,搜索排名及收录往往会比较不错,但如果是没有安装SSL证书的网站,就会提示安全风险警告信息,给访问者带来不好的体验。
4、提高公司品牌形象和可信度
SSL证书有多种类型,按照验证等级不同,从低到高,主要分为域名型DV SSL证书、企业型OV SSL证书、增强型EV SSL证书。安装了OV SSL证书或EV SSL证书的网站,访问者可以在浏览器地址栏查看到公司名称,另外EV证书会直接显示https绿色安全锁图标,用户可直观地了解到其访问的是安全可信的站点,可放心的进行操作和交易,有效提升公司的品牌形象和可信度。
SSH(Secure Shell)是常用的安全的远程控制协议,由于之前常用Telnet协议并不安全,目前SSH已经取代它成为远程控制协议中的主流。
OpenSSH是应用SSH协议的开源远程控制软件,除了默认的用户名+密码认证验证方式以外,OpenSSH还可以使用基于秘钥对(key pair)或者基于主机身份(Host-based)的验证方式。
关于如何基于秘钥对进行SSH身份验证网上有非常多的资料,而关于如何基于主机身份进行SSH身份验证的资料则比较混乱,本文就以作者最近的实践为例加以说明。
这次实验共有2台Linux,客户端主机名是mycentos,IP地址是192168125;服务器端主机名是woocentos7,IP地址是19216816。
服务器端和客户端都要修改SSH配置文件以支持主机身份验证,服务器端需要修改/etc/ssh/sshd_config文件,将HostbasedAuthentication项改为yes,IgnoreRhosts项改为no;客户端需要修改/etc/ssh/ssh_config文件,将HostbasedAuthentication项改为yes,EnableSSHKeysign项改为yes。服务器端修改配置文件以后,需要重启sshd服务使修改后的配置生效,命令是systemctl restart sshd。
服务器端还需要在/etc/hostsequiv配置文件中增加客户端的主机名,在root用户的~/shosts文件中增加客户端的主机名与对应的用户名(root,两项之间用空格隔开),在/etc/ssh/ssh_known_hosts文件中增加客户端的主机公钥信息,格式如下:
mycentos,192168125 ecdsa-sha2-nistp256 AAAAE2VjZ……KO8WzOJo=
其中“mycentos,192168125”是客户端的主机名和IP地址(这样不论是通过主机名还是IP地址都可以找到对应的公钥信息),“ecdsa-sha2-nistp256”是公钥类型,“AAAAE2VjZ……KO8WzOJo=”是具体的公钥内容。可以通过执行ssh-keyscan -t ecdsa 192168125 >>/etc/ssh/ssh_known_hosts命令完成操作。
做完以上的操作,理论上客户端就可以通过验证主机身份的方式用ssh登录服务器端了,不过仍需注意几点:
1、服务器端最好关闭SELinux,如setenforce 0以免影响正常登录,关闭SELinux后如果客户端仍然无法登录,可以重启服务器端sshd服务。注意:不关闭SELinux应该也是可以实现主机认证的功能的,但是因为时间关系,作者并没有再尝试。
2、服务器端和客户端的/etc/hosts文件中应该有对端的主机IP地址解析,以免提示解析错误。
3、服务器端和客户端的用户配置要保持一致。
4、客户端登录时不用添加用户名,使用其他用户登录(非当前Shell用户)时依然会提示输入密码,也就失去了主机认证的意义。
5、客户端登录时可执行ssh -v server_name|server_IP或者ssh -vvvvv server_name|server_IP命令,能够显示登录过程中的详细协商过程和传递参数,对于出现异常时排错非常有用。
《战争雷霆》认证服务器不可用,很可能是网络连接故障。
《战争雷霆》(War Thunder,原名World of Planes)是俄罗斯Gaijin Entertainment开发并发行的一款载具射击网游。玩家可操控固定翼飞机、直升机、坦克、自行火炮、鱼雷快艇、驱逐舰、战列舰等载具。《战争雷霆》认证服务器不可用,很可能是网络连接故障,可以检查一下自己的网络是否有问题,重新连接好即可。
游戏以第二次世界大战、冷战以及当代反恐战争为背景,提供了非常详细和个性化的载具驾驶和战斗平台,玩家在一局游戏中驾驶海陆空三种不同的载具进行游戏,这是本游戏的特色之一(海空联动和陆空联动,而海陆空三军联动)。
《战争雷霆》的游戏载具种类
1、科技树载具
玩家可以免费研发的载具,科技树载具有研发惩罚,包括载具所在等级及上下一个等级没有惩罚。玩家必须要先购买研发连线的上级载具才能继续研发下级载具。
2、高级载具
包括金鹰购买载具以及礼包载具,对下无研发惩罚。
3、联队载具
玩家加入联队后,通过联队活跃度可以免费研发的载具(也可以金鹰直接购买),研发惩罚参照科技树载具。
4、活动载具
玩家通过春活,夏活,秋活,冬活,通行证,世界大战以及特殊活动获得的载具,部分载具可以进入交易所交易,金色背景载具对下无研发惩罚,银色背景参照科技树载具。
0条评论