如何实现基于lamp搭建https服务

如何实现基于lamp搭建https服务

lamp:服务架构

  • httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本,对此类资源的请求将交由php来运行;
  • php:运行php程序;
  • MariaDB:数据管理系统;

(一):  安装其相关服务

  • CentOS 6: httpd, php, mysql-server, php-mysql
  • # service httpd  start
  • # service  mysqld  start
  • CentOS 7: httpd, php, php-mysql, mariadb-server
  • # systemctl  start  httpd.service
  • # systemctl  start  mariadb.service
  • 此处以安装wordprasse基于lmap架构
  • amp(  httpd, mariadb, php)组成

HTTP: hyper text transfer   protocol

  • 应用层协议 ,监听于80/tcp端口,   超文本传输协议
  • 工作模式:
  • http请求报文:http request
  • http响应报文: http response
  • 一次http事务:请求<-->响应
  • HTTP特性:
  • 高度模块化: core + modules
  • DSO:dynamic shared object 动态装卸载
  • MPM:Multipath processing Modules (多路处理模块)
  • 三种处理模型:
  • prefork:多进程模型,每个进程响应一个请求;
  • worker:多进程多线程模型,每线程处理一个用户请求;
  • event:事件驱动模型,多进程模型,每个进程响应多个请求;
  • 程序环境:
  • 配置文件:
  • /etc/httpd/conf/httpd.conf
  • /etc/httpd/conf.d/*.conf
  • 模块相关的配置文件:/etc/httpd/conf.modules.d/*.conf
  • systemd unit file:
  • /usr/lib/systemd/system/httpd.service
  • 主程序文件:
  • /usr/sbin/httpd
  • httpd-2.4支持MPM的动态切换;
  • 日志文件:
  • /var/log/httpd:
  • access_log:访问日志
  • error_log:错误日志
  • 站点文档:
  • /var/www/html
  • 模块文件路径:
  • /usr/lib64/httpd/modules
  • 服务控制:
  • systemctl  enable|disable  httpd.service
  • systemctl  {start|stop|restart|status}  httpd.service

php:脚本语言解释器

配置文件:/etc/php.ini,  /etc/php.d/*.ini

配置文件在php解释器启动时被读取,因此,对配置文件的修改如何生效?

Modules:重启httpd服务;

httpd与php结合的方式:

modules (把php编译成为httpd的模块)

SSL会话的简化过程

  • (1) 客户端发送可供选择的加密方式,并向服务器请求证书;
  • (2) 服务器端发送证书以及选定的加密方式给客户端;
  • (3) 客户端取得证书并进行证书验正:
  • 如果信任给其发证书的CA:
  • (a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名;
  • (b) 验正证书的内容的合法性:完整性验正
  • (c) 检查证书的有效期限;
  • (d) 检查证书是否被吊销;
  • (e) 证书中拥有者的名字,与访问的目标主机要一致;
  • (4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;
  • (5) 服务器用此密钥加密用户请求的资源,响应给客户端;
  • 注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机;
  • 回顾几个术语:PKI,CA,CRL,X.509 (v1, v2, v3)
  • 配置httpd支持https:
  • (1) 为服务器申请数字证书;
  • 测试:通过私建CA发证书
  • (a) 创建私有CA
  • (b) 在服务器创建证书签署请求
  • (c) CA签证
  • (2) 配置httpd支持使用ssl,及使用的证书;
  • # yum -y install mod_ssl
  • 配置文件:/etc/httpd/conf.d/ssl.conf
  • DocumentRoot
  • ServerName
  • SSLCertificateFile
  • SSLCertificateKeyFile
  • (3) 测试基于https访问相应的主机;
  • # openssl  s_client  [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]
  • 测试php及mysql数据库的连接情况是否正常
  • 步骤图如下
  • php测试
  • 编辑测试文件进行测试
  • 下图为测试结果表示OK
  •   php 链接mysql测试
  • 访问其网页会跟据数据库在线情况给出OK或NO的状态返回

测试没有问题就可以开始搭建了

(二)httpd修改url路径

  •      资源的标识机制:URL
  • URL: Unifrom Resource Locator  统一资源定位器(用于描述服务器某特定资源的位置
  • 文档路径映射:
  • DoucmentRoot指向的路径为URL路径的起始位置
  • 其相当于站点URL的根路径;
  • (1) 创建一个DocumentRoot资源路径
  • mkdir /web/www/html -pv
  • (2)  编辑/etc/httpd/conf/httpd.conf文件
  • 修改DocumentRoot文件为自己创建的路径
  • 修改</Directroy>目录路径
  • 如图
  •     
  • (3)  以上步骤完成后重启,再次访问主机名或ip即可
  • centos7 重启 : systemctl restart httpd.service
  • centos6  重启 : service  httpd  restart

(三) 证书生成和签署

  • (1) . 生成私钥
  • [[email protected] CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)
  • (2) . 生成一个CA证书
  • [[email protected] CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
  • 创建证书序列号文件、证书索引文件
  • [[email protected] CA]# touch index.txt serial
  • [[email protected] CA]# echo 01> serial
  • 在客户端同样生成私钥和证书
  • [[email protected] ssl]# (umask 077; openssl genrsa -out httpd.key 1024)
  • 注意:私钥权限为600
  • (3) 生成证书
  • [[email protected] ssl]# openssl req -new -key httpd.key -out httpd.csr.pem
  • (4) 把证书复制到CA服务端签证
  • [[email protected] ssl]# scp httpd.csr.pem [email protected]:/tmp
  • (5)
  • CA签发证书
  • [[email protected] CA]# openssl ca -in /tmp/httpd.csr.pem -out certs/httpd.crt.pem
  • (6)  把签好的证书复制回去‘
  • [[email protected] CA]# scp certs/httpd.crt.pem  192.168.117.131:/etc/httpd/ssl/
  • (7) 客户端 编辑 /etc/httpd/conf.d/ssl.cof文件 这个文件是由mod_ssl模块生成如果没有需下载
  • 编辑内容如下图
  •               
  • 配置完成后再浏览器上导入CA证书即可
  •           
  • 效果如下

(四) lamp:服务架构

  • CentOS 6: httpd, php, mysql-server, php-mysql
  • # service httpd  start
  • # service  mysqld  start
  • CentOS 7: httpd, php, php-mysql, mariadb-server
  • # systemctl  start  httpd.service
  • # systemctl  start  mariadb.service
  • 安装wordprasse基于lmap架构
  • 此处amp(  httpd, mariadb, php)组成
  • 一: 测试php及mysql数据库的连接情况是否正常
  • 步骤图如下
  • php测试
  • 编辑测试文件进行测试
  • 下图为测试结果表示OK
  • php 链接mysql测试   
  • 访问其网页会跟据数据库在线情况给出OK或NO的状态返回
  • (1) 下载wordprasse解压到指定目录下
  • 如图:
  •     
  • (2)  修改wp-config-sample.php内容如图
  •  
  • (3)mysql数据库远程连接用户授权,这里授权所有人都可访问
  • MariaDB [(none)]> GRANT ALL ON wordpress.* TO ‘XunBlogs‘@‘%‘ IDENTIFIED BY ‘xunpass‘;
  • (4) 测试登录mysq了数据库
  • [[email protected] blog]# mysql -uXunBlogs -hwww.wx.com -p
  • (5) 登录填写账号密码等 ,到此整个站点搭建结束
  • 对上面的wordpress站点进行压测
  • [[email protected] www]# ab -n 1000 -c 10 http://www.wx.com/blog
  • 总共1000个请求 10个并发 单个网页访问
  • 测试的详细信息

(五)HTTP的访问控制机制

  • 文件系统路径
  • <Directory  "">
  • ...
  • </Directory>
  • <File  "">
  • ...
  • </File>
  • <FileMatch  "PATTERN">
  • URL路径
  • <Location  "">
  • ...
  • </Location>
  • <LocationMatch "PATTERN">
  • ...
  • </LocationMatch>
  • 控制页面资源允许所有来源的主机可访问:
  • httpd-2.2
  • <Directory "">
  • ...
  • Order allow,deny
  • Allow from all
  • </Directory>
  • 示例:
  • 除了192.168.117.133之外所有192.168网段之内都可访问
  • 如图
  • httpd-2.4
  • <Directory "">
  • ...
  • Require all granted
  • </Directory>
  • 示例:
  • 允许 192.168网段内访问
  • (1) 站点访问控制常见机制
  • 基于IP控制:
  • Require ip  IP地址或网络地址
  • Require not ip IP地址或网络地址
  • 基于主机名控制:
  • Require host 主机名或域名
  • Require not host 主机名或域名
  • 要放置于<RequireAll>配置块中或<RequireAny>配置块中
  • (2) 基于IP的访问控制
  • 允许所有主机访问:Require  all  granted
  • 拒绝所有主机访问:Require  all  deny
  • 基于主机访问控制:
  • Require  host  HOSTNAME:授权指定来源的主机访问;
  • Require  not  host  HOSTNAME:拒绝
时间: 2024-08-24 00:23:06

如何实现基于lamp搭建https服务的相关文章

基于openssl搭建https服务

多种应用层协议,例如http,ftp,smtp等都是明文协议,而这些服务在互联网通信中是不可或缺的,而有时安全显得特别重要,例如网购的时候,所以出现了ssl/tls的技术,那么现在就来实现以下基于ssl搭建https服务 查看当前httpd服务器是否安装了mod_ssl模块 httpd -M 一般在使用rpm包安装的时候,不会安装该模块,在编译安装httpd的时候,在./configure --enable-ssl编译该模块 如果单独使用rpm安装mod_ssl,可以看到安装这个模块生成的文件

基于openssl的https服务的配置

openssl实现私有CA,并配置基于openssl的https服务的配置,原理如下图 在CA服务器上实现私有CA步骤如下: 1.生成一对密钥 2.生成自签证书 基本的配置如下代码; [[email protected] CA]# pwd /etc/pki/CA [[email protected] CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048) [[email protected] CA]# openssl req -ne

基于lamp+fastcgi+https搭建phpMyAdmin和wordpress

前言: lamp为网站搭建的很基本的一个架构,如果仅仅只是静态的网页文件,我们就可以通过基本的web服务器来处理.当我们需要处理动态内容时,比如把用户数据放在数据库,从数据库取出数据等等,我们就必须借助CGI连接到处理动态请求的应用.FastCGI作为一个常驻型的CGI,可以独立于apache服务,可以实现分布式的部署.接下来我们用一台 主机来搭建phpMyAdmin和wordpress,并且让wordpress实现https. 正文: 部署之前我们先简单介绍下我们用到的架构,不用多说lamp就

基于Linux搭建apache服务后,怎么构建web虚拟主机?

虚拟web主机指的是在同一台服务器中运行多个web站点,其中的每个站点实际上并不独立占用整个服务器,因此被称为"虚拟"web主机,通过虚拟web主机服务可以充分利用服务器的硬件资源. 使用httpd可以非常方便的去搭建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点.httpd支持的虚拟主机类型有这么三种(与Windows 的IIS服务一样): 1.相同IP.端口号.不同域名的虚拟主机: 2.相同IP.不同端口号的虚拟主机: 3.不同IP.相同端口号的虚拟主机

Nginx + openssl 搭建https服务

近期忙着和第三方短信公司对接短信上行接口.给予https和digest认证方式进行数据的传输.digest认证由前端phper进行实现,我需要完成nginx+ssl实现https服务.ssl使用openssl自己进行制作. SSL原理: 给予SSL原理知识,在这里不再过多阐述.想详细了解,可以猛戳此链接进行查看:http://www.fenesky.com/blog/2014/07/19/how-https-works.html 1.首先要生成服务器的私钥:    运行时会提示输入密码,此密码用

tomcat搭建https服务

1.生成服务器站点证书 1) 生成密钥仓库 进入jdk的bin目录,如:D:\jdk1.6.0_16\bin 执行: D:\jdk1.6.0_16\bin\keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\server.keystore -validity 36500 (参数简要说明:“D:\server.keystore”含义是将证书仓库文件的保存路径,证书仓库文件名称是server.keystore :“-validity 3

基于IKAnalyzer搭建分词服务

背景 前端高亮需要分词服务,nlp团队提供的分词服务需要跨域调用,而且后台数据索引使用的IK分词.综合评价,前端分词也需要基于IK分词器. IKAnalyzer服务已经停止更新,且对Lucene支持仅测试到4.x.x版本(6.x.x会出现异常),因此使用IK分词器时需要解决一些异常. 依赖 项目以及maven构建,需要指定IK依赖以及Lucene依赖如下: <dependency> <groupId>com.janeluo</groupId> <artifactI

基于LAMP 搭建PowerDNS

PowerDNS 是一个跨平台的开源DNS服务组件,它是高性能的域名服务器,除了支持普通的BIND配置文件,PowerDNS还可以从MySQL,Oracle,PostgreSQL等的数据库读取数据.PowerDNS安装了Poweradmin(基于php实现),能实现Web管理DNS记录,非常方便. PowerDNS官网:https://www.powerdns.com/ PowerDNS文档:https://doc.powerdns.com/Poweradmin官网:http://www.pow

基于openssl的https服务配置

1.安装模块 [[email protected] yum.repos.d]# yum -y install mod_ssl [[email protected] yum.repos.d]# rpm -ql mod_ssl /etc/httpd/conf.d/ssl.conf 配置文件 /usr/lib/httpd/modules/mod_ssl.so /var/cache/mod_ssl /var/cache/mod_ssl/scache.dir /var/cache/mod_ssl/scac