SSL连接是什么?

SSL就像驾照和营业执照这样的电子证书的副本,在网站中对机密文件有保密作用。SSL证书的主要作用是为用户和服务器提供认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性。SSL原理是密钥协商过程——TLS握手。SSL原理是更好的保护数据传输安全。现在市面上的商业SSL证书动辄几千元,少则也需要好几百。现在很多人都在申请SSL证书。下面我们重点介绍下MySQL SSL加密连接。

MySQL SSL的背景

当使用非加密方式SSL连接MySQL数据库时,在网络中传输的所有信息都是明文的,

可以被网络中所有人截取,敏感信息可能被泄露。在传送敏感信息(如密码)时,可以采用SSL连接的方式。

所以,现在很多网站其实默认已经开启了SSL功能,比如Facebook、Twtter、YouTube、淘宝等。

SSL连接作用

1、数据传输的机密性:利用对称密钥算法对传输的数据进行加密。ssl证书购买可以去蔚可云。

2、身份验证机制:现在证书基本利用电子签名,对服务器和客户端进行身份验证,值得说明的是客户端的身份验证是可以选的。

安装配置SSL

(5.7.6+版本配置方式,版本小于5.7.6须用openssl方式生成认证文件和秘钥)

修改权限:

chown mysql.mysql *.pem

查看datadir下生成的认证文件和秘钥文件:

重启mysql

service mysqld stop

service mysqld start

查看ssl状态和文件位置

通过ssl连接方式

创建ssl测试用户,指定只能通过ssl连接(不指定ssl的用户即可通过用户名密码登录也可通过ssl登录)

create user ssl_test@'%' identified by '123456';

grant all on *.* to ssl_test@'%' identified by '123456'require ssl;

flush privileges;

默认通过ssl连接,也可以不加--ssl-mode

5.7客户端才有--ssl-mode参数,老版本须用ssl-ca,ssl-cert,ssl-key指定文件.

通过ssl+秘钥连接方式(安全性更高)

创建x509测试用户,指定只能通过x509加密方式连接

create user x509_test@'%' identified by '123456';

grant all on *.* to x509_test@'%' identitifed by '123456'require x509;

flush privileges;

(远程连接须拷贝认证文件及秘钥文件至远程服务器)

SSL(Secure Sockets Layer)是一种用于确保网络通信安全性的加密协议,广泛应用于互联网上的数据传输。SSL 连接是基于 SSL 协议建立的一种安全的网络连接,它通过加密和身份验证机制,保护数据在传输过程中的机密性、完整性和真实性,防止数据被窃取、篡改或伪造。在数据爬取、HttpClient 通信、LDAP 连接等场景中,都可能涉及到 SSL 连接的使用,例如在 Request 爬虫中与使用 HTTPS 协议的网站进行通信就牵涉到 SSL 连接;HttpClient 中可自定义 SSL 以应对证书不受信任的情况;使用 SSL 连接 LDAP server 也有多种方法 [^1][^2][^3]。 ### Python 示例代码展示 SSL 连接的简单测试: ```python import ssl import socket # 创建 SSL 上下文 context = ssl.create_default_context() # 测试连接的域名和端口 domain = "example.com" port = 443 try: # 创建 SSL 套接字 with socket.create_connection((domain, port)) as sock: with context.wrap_socket(sock, server_hostname=domain) as ssock: print("SSL 连接成功") except Exception as e: print(f"SSL 连接失败: {e}") ``` ### Java 示例代码展示创建 SSL 连接: ```java import java.io.FileInputStream; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.security.KeyStore; import java.security.SecureRandom; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509TrustManager; public class SSLConnectionExample { String cacertsPath; String sslProtocol; public URLConnection createURLConnection(String ip_pageUrl) { try { InputStream in = new FileInputStream(cacertsPath); KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); ks.load(in, null); in.close(); SSLContext sslContext = SSLContext.getInstance(sslProtocol); TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(ks); X509TrustManager defaultTrustManager = (X509TrustManager) tmf.getTrustManagers()[0]; sslContext.init(null, new javax.net.ssl.TrustManager[]{defaultTrustManager}, new SecureRandom()); javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); URL url = new URL(ip_pageUrl); URLConnection con = url.openConnection(); if (con instanceof HttpsURLConnection) { ((HttpsURLConnection) con).setSSLSocketFactory(sslSocketFactory); } return con; } catch (Exception e) { System.err.println("Post Error : " + e.getMessage()); } return null; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值