SSL+socket 详解-概念

SSL+socket 详解-概念,第1张

SSL协议采用数字证书及数字签名进行双端实体认证,用非对称加密算法进行密钥协商,用对称加密算法将数据加密后进行传输以保证数据的保密性,并且通过计算数字摘要来验证数据在传输过程中是否被篡改和伪造,从而为敏感数据的传输提供了一种安全保障手段。

SSL协议提供的服务主要有:
1)认证用户和服务器,确保数据发送到正确的客户机和服务器
认证用户和服务器的合法性,使它们能够确信数据将被发送到正确的客户机和服务器上。客户机和服务器都有各自的识别号,这些识别号由公开密钥进行编号,为验证用户是否合法,SSL协议要求在握手交换数据时进行数字认证,以此确保用户的合法性。
2)加密数据以防止数据中途被窃取
SSL协议所采用的加密技术既有对称密钥技术,也有公开密钥技术。在客户机和服务器进行数据交换前,交换SSL初始握手信息,在SSL握手信息中采用了各种加密技术对其进行加密,以保证其机密性和数据的完整性,并且用数字证书进行鉴别,这样就可以防止非法用户进行破译。
3)维护数据的完整性,确保数据在传输过程中不被改变
SSL协议采用Hash函数和机密共享的方法提供信息的完整性服务,建立客户机和服务器之间的安全通道,使所有经过SSL协议处理的业务在传输过程中能全部完整准确无误的到达目的地。

SSL体系结构:
SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它是客户/服务器应用之间的通信不被攻击抓取,并且始终对服务器进行认证,还可以选择对客户进行认证。SSL体系结构如图1所示。

SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它是客户/服务器应用之间的通信不被攻击抓取,并且始终对服务器进行认证,还可以选择对客户进行认证。
在SSL通讯中,首先采用非对称加密交换信息,使得服务器获得浏览器端提供的对称加密的密钥,然后利用该密钥进行通讯过程中信息的加密和解密。为了保证消息在传递过程中没有被篡改,可以加密HASH编码来确保信息的完整性。SSL通讯过程,如图2所示。
一般情况下,当客户端是保密信息的传递者时,客户端不需要数字证书验证自己身份的真实性,如电子银行的应用,客户需要将自己的账号和密码发送给银行,因此银行的服务器需要安装数字证书来表明自己身份的有效性。在某些应用中,服务器端也需要对客户端的身份进行验证,这时客户端也需要安装数字证书以保证通讯时服务器可以辨别出客户端的身份,验证过程类似于服务器身份的验证过程。

SSL Socket通信是对Socket通信的拓展。在Socket通信的基础上添加了一层安全性保护,提供了更高的安全性,包括身份验证、数据加密以及完整性验证。
SSL Socket双向认证实现技术: JSSE(Java Security Socket Extension ),它实现了SSL和TSL(传输层安全)协议。在JSSE中包含了数据加密,服务器验证,消息完整性和客户端验证等技术。通过使用JSSE,可以在客户机和服务器之间通过TCP/IP协议安全地传输数据。为了实现消息认证:

密钥和授权证书的生成方法:
使用Java自带的keytool命令,在命令行生成。
1、生成服务器端私钥kserverkeystore文件
keytool -genkey -alias serverkey -validity 1 -keystore kserverkeystore
2、根据私钥,导出服务器端安全证书
keytool -export -alias serverkey -keystore kserverkeystore -file servercrt
3、将服务器端证书,导入到客户端的Trust KeyStore中
keytool -import -alias serverkey -file servercrt -keystore tclientkeystore
4、生成客户端私钥kclientkeystore文件
keytool -genkey -alias clientkey -validity 1 -keystore kclientkeystore
5、根据私钥,导出客户端安全证书
keytool -export -alias clientkey -keystore kclientkeystore -file clientcrt
6、将客户端证书,导入到服务器端的Trust KeyStore中
keytool -import -alias clientkey -file clientcrt -keystore tserverkeystore

生成的文件分成两组,服务器端保存:kserverkeystore tserverkeystore 客户端保存:kclientkeystore tclientkyestore。

客户端采用kclientkeystore中的私钥进行数据加密,发送给服务端,服务器端采用tserverkeystore中的clientcrt证书对数据解密,如果解密成功,证明消息来自可信的客户端,进行逻辑处理; 服务器端采用kserverkeystore中的私钥进行数据加密,发送给客户端,客户端采用tclientkeystore中的servercrt证书对数据解密,如果解密成功,证明消息来自可信的服务器端,进行逻辑处理。如果解密失败,那么证明消息来源错误。不进行逻辑处理。

SSL Socket双向认证的安全性:
(1)可以确保数据传送到正确的服务器端和客户端。
(2)可以防止消息传递过程中被窃取。
(3)防止消息在传递过程中被修改。

在系统运行中可能出现以下情况:
(1) 服务器端、客户端都持有正确的密钥和安全证书,此时服务器端和客户端可以进行正常通信。
(2) 客户端的密钥和安全证书不正确,此时服务器端和客户端不可以进行正常通信。
(3) 客户端未持有密钥和安全证书,此时服务器端和客户端也不可以进行正常通信。

此方法适合 *** 作MSSQL2000

使用此方式的条件

(1)自己电脑安装MSSQL2000数据库

(2)您的网站和数据库在自己电脑调试成功

此方法是将远程服务器中的数据库备份到本地电脑的数据库或是将本地电脑数据库还原到远程服务器的数据库

(以下将重点讲解如何把本地数据库还原到远程服务器的数据库,备份的方式和还原类似不再讲解)

1连接上远程数据库服务器:a:打开自己电脑的MSSQL企业管理器--找到SQLServer组--点击右键--新建SQLServer注册(I)--下一步--在可用的服务器下输入数据库的IP地址如19216801点击添加和下一步---点击系统管理员给我分配的SQLSERVER登陆信息和下一步--在登陆名内输入数据库名,在密码内输入数据库密码点击下一步--继续点击下一步直到完成这样就和远程的数据库建立了连接2把本地数据库导入到远程数据库:打开刚建立的数据库服务器如19216801--点开数据库--找到自己的数据库名---右键---所有任务里的导入数据---下一步--到了选择数据源页---服务器中默认local点使用SQLServer身份验证,用户名输入sa密码输入您电脑数据库的sa密码,数据库选择你要导入到远程数据库的原始数据库名,然后下一步---到了选择目的画面服务器选择您远程数据库的IP比如19216801--点使用SQLServer身份验证,用户名中输入您在我们公司开通的数据库名,密码中写上对应的数据库密码,数据库中选择您在本站开通的数据库,然后下一步---点在SQLServer数据库之间复制对象和数据,下一步--到了选择要复制的对象画面,把使用默认选项前面的勾去掉,然后点击右边的选项,把安全措施选项中的3个选择前的勾全部去掉,然后确定,下一步--到了保存、调度和复制包画面,把立即运行前保证打上勾(选择上)--然后默认下一步直到完成,本地电脑的数据库将自动复制到远程数据库。

解决方法:该错误产生的原因是由于SQL Server采取了仅使用Windows账户的身份验证方式,因此用户无法使用SQL Server的登录账户(如sa)进行连接。解决方法如下所述:
步骤/方法
第1步,在SQL Server服务器上依次单击“开始”→“所有程序”→Microsoft SQL Server→“企业管理器”菜单命令,打开SQL Server Enterprise Manager窗口。使用Windows身份验证连接上SQL Server
第2步,在左窗格中展开SQL Server组(本例为Database),然后右键单击SQL Server服务器的名称(本例为hanjiangit),选择“属性”快捷命令。在打开的“SQL Server属性(配置)-HANJIANGIT”对话框中切换至“安全性”选项卡,并在“安全性”区域将身份验证方式选择为SQL Server和Windows。最后单击“确定”按钮使设置生效,
第3步,重新启动SQL Server服务。
在上述解决方法中,如果即使用Windows身份验证的方式依然连接失败的话,那么将使用户处于两难境地。因为SQL Server服务器只允许使用Windows身份验证,然而由于一些特殊原因,使用Windows身份验证却无法连接上SQL Server。这样就造成了无论用何种身份验证方式均无法连接的情况。遇到这种情况,只能通过修改注册表将身份验证方式改为SQL Server和Windows混合验证方式,具体 *** 作方法如下:
第1步,依次单击“开始”→“运行”菜单命令,在运行编辑框中键入Regedit命令并回车,打开“注册表编辑器”窗口。
第2步,依次展开[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]分支,单击选中MSSQLServer选项,在右窗格中找到并双击LoginMode项。在打开的“编辑DWORD值”对话框中将“数值数据”修改为2,并单击“确定”按钮使设置生效,
第3步,关闭“注册表编辑器”窗口,并重新启动SQL Server服务。
通过上述设置,用户可以使用SQL Server账户sa连接数据库,并能够在“企业管理器”中新建SQL Server注册。不过此时仍然无法使用Windows身份验证模式来连接SQL Server,因为在SQL Server中有两个缺省的登录账户BUILTIN\Administrators和“机器名\Administrator”被删除。可以通过下面的步骤恢复这两个账户:
第1步,打开“企业管理器”窗口,在左窗格中依次展开“SQL Server组”→“SQL Server服务器”→“安全性”目录。然后右键单击“登录”选项,执行“新建登录”快捷命令,
第2步,打开“SQL Server登录属性-新建登录”对话框,保持身份验证方式为Windows身份验证,然后在“名称”编辑框中键入BUILTIN\Administrators,
第3步,单击“服务器角色”标签,在“服务器角色”选项卡中选中System Administrators复选框,并单击“确定”按钮,
第4步,重复上述步骤添加“‘机器名(域名)’\Administrator”账户。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13479536.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-15
下一篇 2023-08-15

发表评论

登录后才能评论

评论列表(0条)

保存