前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux下自建CA的实现

Linux下自建CA的实现

作者头像
保持热爱奔赴山海
发布2019-09-18 11:06:57
2.3K0
发布2019-09-18 11:06:57
举报
文章被收录于专栏:饮水机管理员饮水机管理员

CentOS7上搭建lamp环境

要求如下,搭建在同一台虚拟机上,实现下述3个功能:

vhost1: pma.stu13.com, phpMyAdmin, 同时提供https服务

vhost2: wp.stu13.com, wordpress

vhost3: dz.stu13.com, Discuz

Vmware机器情况如下:

    CA服务器:192.168.2.100/24

    httpd服务器:192.168.2.109/24

    Client客户机:192.168.2.1/24

自建ca的过程如下:

CA上:

生成自签证书。

客户端上:

生成证书请求,并将证书请求发给CA服务器。

CA上:

对客户端发来的证书请求签署证书,并将证书文件发回客户端。

下面具体操作下:

一、搭建CA制作证书

# 1.1主机192.168.2.100充当CA服务器,上面执行

cd /etc/pki/CA

(umask 077;openssl genrsa -out private/cakey.pem 2048)    # 生成私钥

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650   # 生成自签证书

wKioL1YBbsKy56clAAJikzFSMX8820.jpg
wKioL1YBbsKy56clAAJikzFSMX8820.jpg

mkdir certs crl newcerts

touch index.txt

echo 01 > serial

# 1.2在httpd服务器上,生成证书请求文件

 (umask 077;openssl genrsa -out httpd.key 2048)# 生成私钥

openssl req -new -key httpd.key -out httpd.csr  # 生成csr证书请求文件

wKiom1YBbsLzohxzAALIhsNoa2s229.jpg
wKiom1YBbsLzohxzAALIhsNoa2s229.jpg

scp httpd.csr root@192.168.2.100:~/# 将sr文件传给CA服务器

# 1.3在CA服务器上,签署证书

openssl ca -in httpd.csr -out httpd.crt -days 3650

wKioL1YBbsKjrbPrAAMstf_W2Jk837.jpg
wKioL1YBbsKjrbPrAAMstf_W2Jk837.jpg

scp httpd.crt root@192.168.2.109:~/     # 将证书传到httpd服务器的root家目录,下面要用到它

# 1.3将CA的证书传给Client测试机器

cd /etc/pki/CA

sz cacert.pem

导出保存到桌面上,重命名为ca.crt,将ca.crt导入到本机。

wKiom1YBbsLx9x--AAEt6ZTGACQ718.jpg
wKiom1YBbsLx9x--AAEt6ZTGACQ718.jpg
wKioL1YBbsOQExq2AAEgWoyBIbc548.jpg
wKioL1YBbsOQExq2AAEgWoyBIbc548.jpg

二、安装httpd

# 关闭防火墙,避免外网无法访问httpd服务器

systemctl stop firewalld        # 暂停centos7上的防火墙

systemctl disable firewalld    # 禁止开机启动centos7的防火墙

# 创建三个虚拟主机的目录,及相关网页文件

mkdir -pv /web/{pma,wp,dz}

touch /web/{pma,wp,dz}/index.html

chown -R apache:apache /web/

cd /web/pma/

tar xf /home/tools/phpMyAdmin-4.4.14.1-english.tar.xz

mv phpMyAdmin-4.4.14.1-english/* ./

rm -rf /web/pma/phpMyAdmin-4.4.14.1-english/    # 清理无用的目录和文件

cd /web/wp

tar xf /home/tools/wordpress-4.3.1-zh_CN.tar.gz

mv wordpress/* ./

rm -fr /web/wp/wordpress/   # 清理无用的目录和文件

cd /web/dz

tar xf /home/tools/Discuz_X3.2_SC_UTF8.tar      # linux 不支持rar格式软件,这里用tar格式的替代

mv Discuz_X3.2_SC_UTF8/upload/* ./

rm -rf Discuz_X3.2_SC_UTF8/# 清理无用的目录和文件

chown -R apache:apache /web/*   # 防止解压出的文件的权限问题,最后还要修改下权限

# 安装httpd2.4

编译安装。。。过程待补充。

检查httpd是不是prefork MPM(命令ps aux|grep htttpd查看),需要修改/etc/httpd/conf.modules.d/00-mpm.conf改成prefork,然后重启httpd服务,php就启动了

# 将SSL文件移动到指定目录

cd /etc/httpd/

mkdir ssl

cd ssl/

cp ~/httpd.key  /etc/httpd/ssl/

cp ~/httpd.crt  /etc/httpd/ssl/

# 编辑http的相关配置文件

vi /etc/httpd/conf/httpd.conf:

DocumentRoot注释掉这一行

AddType application/x-httpd-php  .php  增加这一行

在DirectoryIndex index.html 前面加上index.php

/etc/httpd/conf.d/httpd-vhosts.conf写入如下内容:

<VirtualHost *:80>

    ServerName wp.stu13.com

    DocumentRoot "/web/wp/"

    <Directory "/web/wp">

        Options none

        AllowOverride none

        Require all granted

    </Directory>

    ErrorLog  "/var/log/httpd/wp-err.log"

    CustomLog "/var/log/httpd/wp-access.log" combined

</Virtualhost>

<VirtualHost *:80>

    ServerName dz.stu13.com

    DocumentRoot "/web/dz/"

    <Directory "/web/dz">

        Options none

        AllowOverride none

        Require all granted

    </Directory>

    ErrorLog  "/var/log/httpd/dz-err.log"

    CustomLog "/var/log/httpd/dz-access.log" combined

</Virtualhost>

/etc/httpd/conf.d/ssl.conf写入如下内容:

<VirtualHost *:80>

    ServerName pma.stu13.com

    DocumentRoot "/web/pma/"

    <Directory "/web/pma">

        Options none

        AllowOverride none

        Require all granted

    </Directory>

    ErrorLog  "/var/log/httpd/pma-err.log"

    TransferLog "/var/log/httpd/pma_access_log"         # 注意:SSL 用的是TransferLog

SSLCertificateFile /etc/httpd/ssl/httpd.crt

SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

</Virtualhost>

systemctl restart httpd    # 重启httpd服务,使得SSL配置生效

三、安装mysql(这里以Mariadb通用二进制格式包为例)

# 安装mariadb通用二进制格式包

tar xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/

cd /usr/local/

ln -s mariadb-5.5.43-linux-x86_64/ mysql

cd mysql/

groupadd  mysql

useradd -s /sbin/nologin -M -g mysql mysql

chown -R root:mysql ./*

mkdir /data     # 创建mysql的数据目录

scripts/mysql_install_db --datadir=/data --user=mysql   # 初始化数据库

wKiom1YBbsPDjSiNAALxdTrlyYI436.jpg
wKiom1YBbsPDjSiNAALxdTrlyYI436.jpg

cp support-files/mysql.server /etc/init.d/mysqld    # 拷贝mysql启动脚本

chkconfig --add mysqld # 注意:sysV风格的在centos7上不太一样,systemd和sysV的互相不能启动对方。

# 配置mysql的配置文件

配置文件查找次序:

    /etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf

mkdir /etc/mysql

cp support-files/my-large.cnf /etc/mysql/my.cnf

# 编辑 /etc/mysql/my.cnf ,增加如下几行

datadir = /data

basedir = /usr/local/mysql                                                                             

innodb_file_per_table = on

# skip_name_reslove = on   测试时发现加了这行,导致了mysql无法启动。【/data目录下有相关日志文件】

# 配置环境变量

echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile

source /etc/profile

# 启动mysql

出现下图说明启动成功

wKiom1YBbsOT9no0AAEfKYDfL0A063.jpg
wKiom1YBbsOT9no0AAEfKYDfL0A063.jpg

也可以查看下进程或端口信息

ps aux|grep mysqld

ss -lnt|grep 3306

# 测试php与mysql能否通信

<?php

    $link=mysql_connect('127.0.0.1','mysql','');

    if($link)

        echo "success";

    else

        echo "failure';

    mysql_close();

?>

# 设置mysql账户密码

mysqladmin -u root password amdamd  # 修改root@localhost的密码为amdamd

# 删除多余账户

进入mysql控制台界面,执行

> use mysql

> select user,host,password from user; # 列出所有的mysql账户信息

wKioL1YBbsPySB19AAFTrv47hWM991.jpg
wKioL1YBbsPySB19AAFTrv47hWM991.jpg

# 下面来删除这些多余的账户

> drop user root@'www';

> drop user root@'127.0.0.1';

> drop user root@'::1';

> drop user ''@'localhost';

> drop user ''@'www';

> select user,host,password from mysql.user;    # 再次查看,只剩下一个账户了

wKiom1YBbsOyDTLrAADiDuvEdqg243.jpg
wKiom1YBbsOyDTLrAADiDuvEdqg243.jpg

# 建立一个可以远程访问的账户root@%,密码为amdamd。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'amdamd' WITH GRANT OPTION;

flush privileges;

wKioL1YBbsOjvJ5TAAEazn9LNMY873.jpg
wKioL1YBbsOjvJ5TAAEazn9LNMY873.jpg

# 创建数据库

# mysql -uroot -p

> create database wp;

> create database dz;

三、安装php

yum install php -y

# 编写测试文件

test.php内容如下:

<?php

    phpinfo();

?>

通过IE访问测试,出现下图界面说明php安装成功。

wKiom1YBbsPS0XvzAAB7etMuI3k626.jpg
wKiom1YBbsPS0XvzAAB7etMuI3k626.jpg

# 如果后期测试访问网站出现下面的提示,需要安装mbstring,

yum install php-mbstring -y

再重启httpd服务即可。

wKioL1YBb2KCkMdwAACkYNfY4e0529.jpg
wKioL1YBb2KCkMdwAACkYNfY4e0529.jpg

五、安装phpMyAdmin、wordpress、Discuz

# phpMyAdmin

解压到指定目录下,

cp config.sample.inc.php config.inc.php

然后编辑config.inc.php,里面要加入一些随机数

取随机数的命令tr -d 'a-zA-Z0-9' < /dev/urandom | head -30 | md5sum

将生成的随机数粘贴到blowfish_secret 那一行后面的''中。

重启httpd服务即可。

# 安装Discuz,过程略过

wKiom1YBb2LCiep-AAEYB2Ke_0E145.jpg
wKiom1YBb2LCiep-AAEYB2Ke_0E145.jpg
wKioL1YBb2LA9DBEAACbooqyOGw538.jpg
wKioL1YBb2LA9DBEAACbooqyOGw538.jpg
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-09-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档