在Ubuntu 16.04上通过SSL支持保护MariaDB

MariaDB是一个免费的开源数据库,并且是MySQL中使用最广泛的直接替代方法。它由MySQL的开发人员制作,并打算在GNU GPL下保持免费。它非常快速,可扩展,并且具有丰富的功能集,使其对于各种用例都非常通用。

本教程将引导您逐步了解如何在Ubuntu 16.04上安装和配置具有SSL支持的MariaDB。

要求

  • 新鲜的Ubuntu 16.04 Vultr实例。
  • 具有sudo特权的非root用户。
  • 在服务器实例上配置了静态IP地址192.168.0.190。
  • 在客户端计算机上配置了静态IP地址192.168.0.191。

步骤1:安装MariaDB

默认情况下,Ubuntu 16.04存储库中不提供最新版本的MariaDB。因此您需要将MariaDB存储库添加到系统中。

首先,使用以下命令下载密钥:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

接下来,将MariaDB存储库添加到/etc/apt/sources.list文件中:

sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list

使用以下命令更新apt索引:

sudo apt-get update -y

apt索引更新后,使用以下命令安装MariaDB服务器:

sudo apt-get install mariadb-server -y

启动MariaDB服务器,并使其在启动时启动:

sudo systemctl start mysql
sudo systemctl enable mysql

接下来,您将需要运行mysql_secure_installation脚本来保护MariaDB的安装。此脚本允许您设置root密码,删除匿名用户,禁止远程root登录以及删除测试数据库:

sudo mysql_secure_installation

步骤2:为服务器创建SSL证书和私钥

首先,创建一个目录来存储所有密钥和证书文件。

sudo mkdir /etc/mysql-ssl

接下来,/etc/mysql-ssl使用以下命令将目录更改为并创建CA证书和私钥:

sudo cd /etc/mysql-ssl
sudo openssl genrsa 2048 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem

回答所有问题,如下所示:

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]:GUJ
Locality Name (eg, city) []:JND
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ENJ
Organizational Unit Name (eg, section) []:SYSTEM
Common Name (e.g. server FQDN or YOUR name) []:HITESH
Email Address []:[email protected]

接下来,使用以下命令为服务器创建私钥:

sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-req.pem

像上一个命令一样回答所有问题。

接下来,使用以下命令将服务器的私钥导出为RSA类型的密钥:

sudo sudo openssl rsa -in server-key.pem -out server-key.pem

最后,使用CA证书生成服务器证书,如下所示:

sudo openssl x509 -req -in server-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

现在,您可以使用以下命令查看所有证书和密钥:

ls

您应该看到以下输出:

ca-cert.pem  ca-key.pem  server-cert.pem  server-key.pem  server-req.pem

完成后,您可以继续下一步。

步骤3:将MariaDB服务器配置为使用SSL

您应该拥有所有证书和一个私钥;现在您将需要配置MariaDB以使用密钥和证书。您可以通过编辑/etc/mysql/mariadb.conf.d/50-server.cnf文件来做到这一点:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

在该[mysqld]部分下添加以下行:

ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/server-cert.pem
ssl-key=/etc/mysql-ssl/server-key.pem

##Change this value to connect the MariaDB server from another host.
bind-address = *

保存文件,然后重新启动MariaDB服务以应用以下更改:

sudo systemctl restart mysql

现在,您可以通过以下查询检查SSL配置是否正常工作:

mysql -u root -p
MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';

如果配置成功,您应该看到以下输出:

+---------------+--------------------------------+
| Variable_name | Value                          |
+---------------+--------------------------------+
| have_openssl  | YES                            |
| have_ssl      | YES                            |
| ssl_ca        | /etc/mysql-ssl/ca-cert.pem     |
| ssl_capath    |                                |
| ssl_cert      | /etc/mysql-ssl/server-cert.pem |
| ssl_cipher    |                                |
| ssl_crl       |                                |
| ssl_crlpath   |                                |
| ssl_key       | /etc/mysql-ssl/server-key.pem  |
+---------------+--------------------------------+

您应该注意到上述输出中的have_sslhave_openssl值已启用。

步骤4:使用SSL权限创建用户

创建一个有权通过SSL访问MariaDB服务器的远程用户。通过运行以下命令来执行此操作:

首先,登录到MySQL shell:

mysql -u root -p

接下来,创建用户remote并授予特权以通过SSL访问服务器。

MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO 'remote'@'192.168.0.191' IDENTIFIED BY 'password' REQUIRE SSL;

然后,使用以下命令刷新特权:

MariaDB [(none)]>FLUSH PRIVILEGES;

最后,使用以下命令从MySQL Shell退出:

MariaDB [(none)]>exit;

注意: 192.168.0.191是远程用户(客户端)计算机的IP地址。

现在,您的服务器已准备好允许连接到远程用户。

步骤5:创建客户端证书

您的服务器端配置已完成。接下来,您将需要为客户端创建一个新的密钥和证书。

在服务器计算机上,使用以下命令创建客户端密钥:

sudo cd /etc/mysql-ssl
sudo sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem

接下来,使用以下命令处理客户端RSA密钥:

sudo openssl rsa -in client-key.pem -out client-key.pem

最后,使用以下命令签署客户端证书:

sudo openssl x509 -req -in client-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

步骤6:将MariaDB客户端配置为使用SSL

所有证书和密钥都已准备好供客户端使用。接下来,您将需要将所有客户端证书复制到要运行MariaDB客户端的任何客户端计算机上。

您将需要在客户端计算机上安装MariaDB客户端。

首先,在客户端计算机上,使用以下命令下载MariaDB的密钥:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

然后,将MariaDB存储库添加到/etc/apt/sources.list文件中:

sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list

接下来,使用以下命令更新apt索引:

sudo apt-get update -y

apt索引更新后,使用以下命令在客户端计算机上安装MariaDB客户端:

sudo apt-get install mariadb-client -y

现在创建一个目录来存储所有证书:

sudo mkdir /etc/mysql-ssl

接下来,使用以下命令将所有客户端证书从服务器计算机复制到客户端计算机:

sudo scp [email protected]:/etc/mysql-ssl/client-* /etc/mysql-ssl/

然后,您将需要配置MariaDB客户端以使用SSL。您可以通过创建一个/etc/mysql/mariadb.conf.d/50-mysql-clients.cnf文件来做到这一点 :

sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

添加以下行:

[client]
ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/client-cert.pem
ssl-key=/etc/mysql-ssl/client-key.pem

完成后保存文件。

步骤7:验证远程连接

现在,所有内容都已配置完毕,是时候验证是否可以成功连接到MariaDB服务器了。

在客户端计算机上,运行以下命令以连接到MariaDB服务器:

mysql -u remote -h 192.168.0.190 -p mysql

系统将要求您输入remote用户密码。输入密码后,您将登录到远程MariaDB服务器。

使用以下命令检查连接状态:

MariaDB [mysql]> status

您应该看到以下输出:

--------------
mysql  Ver 15.1 Distrib 10.2.7-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Connection id:      62
Current database:   mysql
Current user:       [email protected]
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server:         MariaDB
Server version:     10.0.31-MariaDB-0ubuntu0.16.04.2 Ubuntu 16.04
Protocol version:   10
Connection:     192.168.0.190 via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:       3306
Uptime:         1 hours 31 min 31 sec

您应该SSL: Cipher in use is DHE-RSA-AES256-SHA在上面的输出中看到。这意味着您的连接现在通过SSL安全。

结论

恭喜你!您已成功配置具有SSL支持的MariaDB服务器。您现在可以将访问权限授予其他客户端,以通过SSL访问MariaDB服务器。



Leave a Comment

如何在Arch Linux上安装MariaDB 10.3或MySQL 8.0

如何在Arch Linux上安装MariaDB 10.3或MySQL 8.0

先决条件运行最新的Arch Linux的Vultr服务器(请参阅本文。)Sudo访问:需要以root身份运行的命令以#开头,其中一个

使用密钥文件在Ubuntu 16.04上的访问控制中在MongoDB 3.4中部署具有高可用性的副本集

使用密钥文件在Ubuntu 16.04上的访问控制中在MongoDB 3.4中部署具有高可用性的副本集

自2009年推出以来,MongoDB一直引领NoSQL行业。MongoDB的核心概念之一是副本集,因此在使用i之前

自动备份多个MySQL或MariaDB数据库

自动备份多个MySQL或MariaDB数据库

简介在本文中,我们将逐步介绍如何使用自定义bash脚本备份位于同一台计算机上的多个MySQL或MariaDB数据库

如何在Debian 9上安装Apache Cassandra 3.11.x

如何在Debian 9上安装Apache Cassandra 3.11.x

使用其他系统?Apache Cassandra是免费的开源NoSQL数据库管理系统,旨在提供可扩展性,高

如何在CentOS 7上安装和配置OrientDB Community Edition

如何在CentOS 7上安装和配置OrientDB Community Edition

OrientDB是下一代多模型开源NoSQL DBMS。通过支持多种数据模型,OrientDB可以在以下方面提供更多功能和灵活性:

如何在Ubuntu 16.04上备份,还原或传输MySQL / MariaDB数据库

如何在Ubuntu 16.04上备份,还原或传输MySQL / MariaDB数据库

备份是处理数据库的重要部分。无论您是运行公司网站还是仅托管WordPress,备份您的信息都很重要

如何在Ubuntu 15.10上安装Redis

如何在Ubuntu 15.10上安装Redis

Redis是键值数据存储解决方案,通常称为NoSQL数据库。它是内存中的单元,因此可以实现很高的读/写速度。

备份MySQL数据库

备份MySQL数据库

MySQL是世界上用于数据库的最流行的软件。确保您具有数据库备份非常重要。这种做法允许

使用Telegraf在Debian Jessie上安装InfluxDB

使用Telegraf在Debian Jessie上安装InfluxDB

简介InfluxDB是用Go编写的基于时间序列的数据库。InfluxDB有许多实际用途,其中之一是将监视数据存储在服务器上。一世

如何在Arch Linux上安装PostgreSQL 11.1

如何在Arch Linux上安装PostgreSQL 11.1

先决条件运行最新的Arch Linux的Vultr服务器(请参阅本文。)Sudo访问。需要以root身份运行的命令以#开头,其中一个

在OpenBSD 6上配置MariaDB

在OpenBSD 6上配置MariaDB

在本文中,我将向您展示如何在OpenBSD 6上安装MariaDB并将其配置为可供chroot的Web服务器(Apache或Nginx)访问。你会

如何在Ubuntu 16.04 LTS上安装Apache Cassandra 3.11.x

如何在Ubuntu 16.04 LTS上安装Apache Cassandra 3.11.x

使用其他系统?Apache Cassandra是免费的开源NoSQL数据库管理系统,旨在提供可扩展性,高

使用Snort设置Bar 2

使用Snort设置Bar 2

Barnyard2是一种将Snort的二进制输出存储和处理到MySQL数据库中的方法。开始之前,请注意,如果您没有打nor

如何使用Redis配置WordPress

如何使用Redis配置WordPress

Redis是一个数据结构存储。它在WordPress网站中很受欢迎,因为它通过优化的缓存方法提供了巨大的性能提升。

如何在Ubuntu 16.04上安装和使用ArangoDB

如何在Ubuntu 16.04上安装和使用ArangoDB

使用其他系统?简介ArangoDB是一个开放源代码NoSQL数据库,具有用于文档,图形和键值的灵活数据模型。它是

如何在Arch Linux上安装MongoDB 4.0

如何在Arch Linux上安装MongoDB 4.0

先决条件运行最新的Arch Linux的Vultr服务器(请参阅本文)Sudo访问:需要以root身份运行的命令以#开头,其中一个

如何在CentOS 7上安装Apache Cassandra 3.11.x

如何在CentOS 7上安装Apache Cassandra 3.11.x

使用其他系统?Apache Cassandra是免费的开源NoSQL数据库管理系统,旨在提供可扩展性,高

如何在CentOS 7上安装Laravel GitScrum

如何在CentOS 7上安装Laravel GitScrum

Laravel GitScrum或GitScrum是一种开源生产力工具,旨在帮助开发团队以类似的方式实施Scrum方法。

使用Docker在CentOS 7上开始使用SQL Server 2017(MS-SQL)

使用Docker在CentOS 7上开始使用SQL Server 2017(MS-SQL)

前提条件Docker引擎1.8+。至少4GB的磁盘空间。至少4GB的RAM。步骤1.安装Docker为了安装SQL-Server,Docker mus

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。