Linux|UNIX下LAMP环境的搭建及常见问题[连载7]

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
DIR=`pwd`/openssl

PRIV=$DIR/private

 

mkdir $DIR $PRIV $DIR/newcerts

cp /usr/share/ssl/openssl.cnf $DIR

replace ./demoCA $DIR -- $DIR/openssl.cnf

 

# Create necessary files: $database, $serial and $new_certs_dir

# directory (optional)

 

touch $DIR/index.txt

echo "01" > $DIR/serial

 

#

# Generation of Certificate Authority(CA)

#

 

openssl req -new -x509 -keyout $PRIV/cakey.pem -out $DIR/cacert.pem \

    -days 3600 -config $DIR/openssl.cnf

 

# Sample output:

# Using configuration from /home/monty/openssl/openssl.cnf

# Generating a 1024 bit RSA private key

# ................++++++

# .........++++++

# writing new private key to '/home/monty/openssl/private/cakey.pem'

# Enter PEM pass phrase:

# Verifying password - Enter PEM pass phrase:

# -----

# 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]:FI

# State or Province Name (full name) [Some-State]:.

# Locality Name (eg, city) []:

# Organization Name (eg, company) [Internet Widgits Pty Ltd]:MySQL AB

# Organizational Unit Name (eg, section) []:

# Common Name (eg, YOUR name) []:MySQL admin

# Email Address []:

 

#

# Create server request and key

#

openssl req -new -keyout $DIR/server-key.pem -out \

    $DIR/server-req.pem -days 3600 -config $DIR/openssl.cnf

 

# Sample output:

# Using configuration from /home/monty/openssl/openssl.cnf

# Generating a 1024 bit RSA private key

# ..++++++

# ..........++++++

# writing new private key to '/home/monty/openssl/server-key.pem'

# Enter PEM pass phrase:

# Verifying password - Enter PEM pass phrase:

# -----

# 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]:FI

# State or Province Name (full name) [Some-State]:.

# Locality Name (eg, city) []:

# Organization Name (eg, company) [Internet Widgits Pty Ltd]:MySQL AB

# Organizational Unit Name (eg, section) []:

# Common Name (eg, YOUR name) []:MySQL server

# Email Address []:

#

# Please enter the following 'extra' attributes

# to be sent with your certificate request

# A challenge password []:

# An optional company name []:

 

#

# Remove the passphrase from the key

#

openssl rsa -in $DIR/server-key.pem -out $DIR/server-key.pem

 

#

# Sign server cert

#

openssl ca  -policy policy_anything -out $DIR/server-cert.pem \

    -config $DIR/openssl.cnf -infiles $DIR/server-req.pem

 

# Sample output:

# Using configuration from /home/monty/openssl/openssl.cnf

# Enter PEM pass phrase:

# Check that the request matches the signature

# Signature ok

# The Subjects Distinguished Name is as follows

# countryName           :PRINTABLE:'FI'

# organizationName      :PRINTABLE:'MySQL AB'

# commonName            :PRINTABLE:'MySQL admin'

# Certificate is to be certified until Sep 13 14:22:46 2003 GMT

# (365 days)

# Sign the certificate? [y/n]:y

#

#

# 1 out of 1 certificate requests certified, commit? [y/n]y

# Write out database with 1 new entries

# Data Base Updated

 

#

# Create client request and key

#

openssl req -new -keyout $DIR/client-key.pem -out \

    $DIR/client-req.pem -days 3600 -config $DIR/openssl.cnf

 

# Sample output:

# Using configuration from /home/monty/openssl/openssl.cnf

# Generating a 1024 bit RSA private key

# .....................................++++++

# .............................................++++++

# writing new private key to '/home/monty/openssl/client-key.pem'

# Enter PEM pass phrase:

# Verifying password - Enter PEM pass phrase:

# -----

# 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]:FI

# State or Province Name (full name) [Some-State]:.

# Locality Name (eg, city) []:

# Organization Name (eg, company) [Internet Widgits Pty Ltd]:MySQL AB

# Organizational Unit Name (eg, section) []:

# Common Name (eg, YOUR name) []:MySQL user

# Email Address []:

#

# Please enter the following 'extra' attributes

# to be sent with your certificate request

# A challenge password []:

# An optional company name []:

 

#

# Remove the passphrase from the key

#

openssl rsa -in $DIR/client-key.pem -out $DIR/client-key.pem

 

#

# Sign client cert

#

 

openssl ca  -policy policy_anything -out $DIR/client-cert.pem \

    -config $DIR/openssl.cnf -infiles $DIR/client-req.pem

 

# Sample output:

# Using configuration from /home/monty/openssl/openssl.cnf

# Enter PEM pass phrase:

# Check that the request matches the signature

# Signature ok

# The Subjects Distinguished Name is as follows

# countryName           :PRINTABLE:'FI'

# organizationName      :PRINTABLE:'MySQL AB'

# commonName            :PRINTABLE:'MySQL user'

# Certificate is to be certified until Sep 13 16:45:17 2003 GMT

# (365 days)

# Sign the certificate? [y/n]:y

#

#

# 1 out of 1 certificate requests certified, commit? [y/n]y

# Write out database with 1 new entries

# Data Base Updated

 

#

# Create a my.cnf file that you can use to test the certificates

#

 

cnf=""

cnf="$cnf [client]"

cnf="$cnf ssl-ca=$DIR/cacert.pem"

cnf="$cnf ssl-cert=$DIR/client-cert.pem"

cnf="$cnf ssl-key=$DIR/client-key.pem"

cnf="$cnf [mysqld]"

cnf="$cnf ssl-ca=$DIR/cacert.pem"

cnf="$cnf ssl-cert=$DIR/server-cert.pem"

cnf="$cnf ssl-key=$DIR/server-key.pem"

echo $cnf | replace " " '

' > $DIR/my.cnf

 
------------------- 翻译结束 ----------------------------

请特别注意这篇文章中没有详细指出,但是脚本中已经提到了,我们需要修改MySQL配置文件,而在脚本中的做法是,创建了一个测试用的数据库配置文件。

 
生产中我们可以直接修改 /etc/my.conf

分别在相应的 [client] 字段添加 CA 证书( ssl-ca )、客户端证书( ssl-cert )和客户端私钥的路径( ssl-key ),相应的 [mysqld] 字段添加 CA 证书( ssl-ca )、服务器证书( ssl-cert )和服务器私钥的路径( ssl-key )。

例如:我按照英文文档的第一个例子示范在数据文件路径 /data/mysql/ 下操作后,又把相应的 client 文件移动到了 mysql 用户目录 /home/mysql 下(本机也充当客户端),同时根公钥也拷贝一份过去如下:

#[mysqld]部分

ssl-ca         =       /data/mysql/ca-cert.pem

ssl-cert       =       /data/mysql/server-cert.pem

ssl-key         =       /data/mysql/server-key.pem
#[mysql]部分,客户端的机子上必须配置linux/UNIX
ssl-ca         =       /home/mysql/ca-cert.pem

ssl-cert       =       /home/mysql/client-cert.pem

ssl-key         =       /home/mysql/client-key.pem
并把上面的按照对应关系添加到 /etc/my.conf mysqld mysql 字段。

如果客户端是远程的计算机我们也需要把
ca-cert.pem
client-cert.pemclient-key.pem
传输到那台计算机上并进行相关的配置。

接下来的连载会测试客户端到MySQL服务器的SSL连接是否正常。



本文转自xiaoyuwang 51CTO博客,原文链接:http://blog.51cto.com/wangxiaoyu/201106,如需转载请自行联系原作者





相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
27天前
|
JSON Kubernetes Linux
Linux环境签发CA证书和K8s需要的证书
Linux环境签发CA证书和K8s需要的证书
28 0
|
1月前
|
存储 缓存 Linux
如何在Linux环境下对pip的缓存地址进行修改
如何在Linux环境下对pip的缓存地址进行修改
|
1月前
|
NoSQL Linux 开发工具
【Linux】环境基础开发工具的使用之gdb详解(三)
【Linux】环境基础开发工具的使用之gdb详解(三)
|
1月前
|
Linux 编译器 开发工具
【Linux】环境基础开发工具的使用之gcc详解(二)
【Linux】环境基础开发工具的使用之gcc详解(二)
|
1月前
|
存储 网络协议 Ubuntu
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
|
1月前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
26 0
|
14天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
38 6
|
1月前
|
存储 JavaScript Linux
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
|
28天前
|
应用服务中间件 Linux PHP
Linux下安装php环境并且配置Nginx支持php-fpm模块
Linux下安装php环境并且配置Nginx支持php-fpm模块
29 0
|
29天前
|
Java Linux
linux安装jdk环境
linux安装jdk环境
29 0