如何创建一个自签名的SSL证书【转】

2017-5-1 寒川 计算机

引言
使用HTTP(超文本传输)协议访问互联网上的数据是没有经过加密的。也就是说,任何人都可以通过适当的工具拦截或者监听到在网络上传输的数据流。但是有时候,我们需要在网络上传输一些安全性或者私秘性的数据,譬如:包含信用卡及商品信息的电子订单。这个时候,如果仍然使用HTTP协议,势必会面临非常大的风险!相信没有人能接受自己的信用卡号在互联网上裸奔。
HTTPS(超文本传输安全)协议无疑可以有效的解决这一问题。所谓HTTPS,其实就是HTTP和SSL/TLS的组合,用以提供加密通讯及对网络服务器的身份鉴定。HTTPS的主要思想是在不安全的网络上创建一安全信道,防止黑客的窃听和攻击。
SSL(安全套接层)可以用来对Web服务器和客户端之间的数据流进行加密。
SSL利用非对称密码技术进行数据加密。加密过程中使用到两个秘钥:一个公钥和一个与之对应的私钥。使用公钥加密的数据,只能用与之对应的私钥解密;而使用私钥加密的数据,也只能用与之对应的公钥解密。因此,如果在网络上传输的消息或数据流是被服务器的私钥加密的,则只能使用与其对应的公钥解密,从而可以保证客户端与与服务器之间的数据安全。
数字证书(Certificate)
在HTTPS的传输过程中,有一个非常关键的角色——数字证书,那什么是数字证书?又有什么作用呢?
所谓数字证书,是一种用于电脑的身份识别机制。由数字证书颁发机构(CA)对使用私钥创建的签名请求文件做的签名(盖章),表示CA结构对证书持有者的认可。数字证书拥有以下几个优点:
使用数字证书能够提高用户的可信度
数字证书中的公钥,能够与服务端的私钥配对使用,实现数据传输过程中的加密和解密
在证认使用者身份期间,使用者的敏感个人数据并不会被传输至证书持有者的网络系统上
X.509证书包含三个文件:key,csr,crt。
key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。
创建自签名证书的步骤
注意:以下步骤仅用于配置内部使用或测试需要的SSL证书。
第1步:生成私钥
使用openssl工具生成一个RSA私钥
openssl genrsa -des3 -out server.key 2048
说明:生成rsa私钥,des3算法,2048位强度,server.key是秘钥文件名。
注意:生成私钥,需要提供一个至少4位的密码。
第2步:生成CSR(证书签名请求)
生成私钥之后,便可以创建csr文件了。
此时可以有两种选择。理想情况下,可以将证书发送给证书颁发机构(CA),CA验证过请求者的身份之后,会出具签名证书(很贵)。另外,如果只是内部或者测试需求,也可以使用OpenSSL实现自签名,具体操作如下:
openssl req -new -key server.key -out server.csr

说明:需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。
 
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Beijing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:joyios
Organizational Unit Name (eg, section) []:info technology
Common Name (e.g. server FQDN or YOUR name) []:demo.joyios.com
Email Address []:liufan@joyios.com
 
第3步:删除私钥中的密码
在第1步创建私钥的过程中,由于必须要指定一个密码。而这个密码会带来一个副作用,那就是在每次Apache启动Web服务器时,都会要求输入密码,这显然非常不方便。要删除私钥中的密码,操作如下:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
 
第4步:生成自签名证书
如果你不想花钱让CA签名,或者只是测试SSL的具体实现。那么,现在便可以着手生成一个自签名的证书了。
需要注意的是,在使用自签名的临时证书时,浏览器会提示证书的颁发机构是未知的。
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
说明:crt上有证书持有人的信息,持有人的公钥,以及签署者的签名等信息。当用户安装了证书之后,便意味着信任了这份证书,同时拥有了其中的公钥。证书上会说明用途,例如服务器认证,客户端认证,或者签署其他证书。当系统收到一份新的证书的时候,证书会说明,是由谁签署的。如果这个签署者确实可以签署其他证书,并且收到证书上的签名和签署者的公钥可以对上的时候,系统就自动信任新的证书。
第5步:安装私钥和证书
将私钥和证书文件复制到Apache的配置目录下即可,在Mac 10.10系统中,复制到服务器对应目录中即可。

标签: 计算机 linux web apache ssl https

评论(0) 浏览(3703)

用mod_speling模块让linux下的apache不区分大小写

2015-3-18 寒川 计算机

大概是这样一个情况,有一套windows的php程序,现在准备移植到linux下面,然而,由于各种原因,源程序中对文件目录的大小写很不敏感,若逐一修改源代码,显得费时,比如有的地方用的是./Js/xx.js,有的地方又用的./js/xx.js,还有各种图片路径大小写相当混乱。在懒得修改源程序的情况下,首先想到的是如何让apache服务器能不区分url路径的大小写,百度一下,出来一大堆,然而大多讲的很粗略。经过短时间琢磨,下面将详细的介绍一下linux下面如何安装mod_speling达到让apache不区分路径大小写的目的。测试环境:wdcp面板,apache版本为2.2.24,其他版请参考本文配置。下面进入正题:

1、下载apache源码,因为没找到2.2.24版本的apache源码,我直接下载的2.2.29版本的apache,虽然此版本有点差异,但是还好mod_speling能使用。apache 2.2.29下载地址:http://httpd.apache.org/download.cgi

2、解压源码,找到httpd-2.2.29/modules/mappers目录,将其上传至linux服务器的/www/wdlinux/httpd-2.2.24/bin/目录。

3、cd至linux服务器的/www/wdlinux/httpd-2.2.24/bin/mappers/,然后运行/www/wdlinux/httpd-2.2.24/bin//apxs -c -i -a mod_speling.c。

4、查看/www/wdlinux/httpd-2.2.24/modules/mod_speling.so这个文件是否已经生成,同时查看/www/wdlinux/httpd-2.2.24/conf/httpd.conf中是否已经添加LoadModule speling_module     modules/mod_speling.so,若没有,且/www/wdlinux/httpd-2.2.24/modules/下面存在mod_speling.so文件,请手动添加。

5、在/www/wdlinux/httpd-2.2.24/conf/httpd.conf文件最后一行添加CheckSpelling  on,以启用模块。

6、重启apache服务,server httpd restart,若无意外,应该就成功安装了mod_speling模块。

祝你好运!

标签: linux apache mod_speling

评论(1) 浏览(10156)

wdcp安装apache2安装mod_proxy代理模块

2014-4-22 寒川 计算机

安装挺简单的,随便写写,记录下来或许以后有用。先介绍一下环境:centos6.x,wdcp_v2.5.10,apache2.2.24,其他版本自行参考。

随便说下,最初安装wdcp是采用源码安装,源码解压至/root/lanmp的。下面是安装代理模块命令(注意其他版本、源码路径差异):


cd /root/lanmp/httpd-2.2.24/modules/proxy/ #进入源码目录
/www/wdlinux/httpd-2.2.24/bin/apxs -i -c -a mod_proxy.c proxy_util.c  #编译安装
/www/wdlinux/httpd-2.2.24/bin/apxs -i -c -a mod_proxy_http.c
/www/wdlinux/httpd-2.2.24/bin/apxs -i -c -a mod_proxy_ftp.c
/www/wdlinux/httpd-2.2.24/bin/apxs -i -c -a mod_proxy_connect.c


如果正常的话会在/www/wdlinux/httpd-2.2.24/modules/生成mod_proxy.so、mod_proxy_connect.so、mod_proxy_ftp.so、mod_proxy_http.so几个文件。同时查看一下/www/wdlinux/httpd-2.2.24/conf/httpd.conf是否增加了如下几行,如果没增加手动增加:


LoadModule proxy_module       modules/mod_proxy.so
LoadModule proxy_http_module  modules/mod_proxy_http.so
LoadModule proxy_ftp_module   modules/mod_proxy_ftp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
然后重启apache,打完收工!


标签: apache CentOS wdcp mod_proxy 代理

评论(0) 浏览(12072)

apache伪静态参数超过9个的解决办法

2013-11-28 寒川 计算机

apache服务器,利用.htaccess做伪静态筛选,由于条件比较多,且筛选的参数和值均为伪静态参数,一个7个筛选条件就多大14个伪静态参数。简直坑爹啊。下面是解决办法:

RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php?$1=$2 [L]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php?$1=$2&$3=$4 [L]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php$1=$2&$3=$4&$5=$6 [L]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php?$1=$2&$3=$4&$5=$6&$7=$8 [L]
#上面参数未超过9个,下面超过9个参数的情况。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(.*)\.html a-$9\.html$1=$2&$3=$4&$5=$6&$7=$8 [C,NC]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3 [QSA,L,NC] #结合上一行,共计10个参数。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3=$4&$5 [QSA,L,NC] #结合第6行,共计12个参数。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3=$4&$5=$6&$7 [QSA,L,NC] #结合第6行,共计14个参数。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3=$4&$5=$6&$7=$8&$9 [QSA,L,NC] #结合第6行,共计16个参数。

访问地址分别如下:

a-a1.html 对应url参数为a.php?a=1(其中参数a可以为b、c、d、e、f、g)
a-a1-b1.html 对应url参数为a.php?a=1&b=1
……
a-a1-b1-c1-d1-f1-g1.html 对应url参数为a.php?a=1&b=1&c=1&d=1&e=1&f=1&g=1

对于上述第4行,共计14个伪静态参数。

标签: apache 伪静态 htaccess 超过9个参数

评论(0) 浏览(8976)

今天闲来没事,虚拟机安装个CentOS6.4玩玩。

2013-11-13 寒川 计算机

先安装过程的截图:

CentOS-2013-11-13-20-57-47.png

 

再上安装完成的截图(话说挺漂亮的界面,不过一般不用吧。):

CentOS-2013-11-13-21-15-17.png

 

然后讲讲CentOS 6.4 安装配置 LAMP 服务器(Apache+PHP5+MySQL)。

以前要么用的别人装好的带web的服务器,要么装的ubuntu然后装的web服务器。今天闲的蛋疼,来一下CentOS的。话说这货真的好用。下面介绍CentOS6.4安装配置LAMP服务器:

一、安装前的准备

1、配置防火墙,开启 80 端口、3306 端口。

用vi或文本编辑器打开/etc/sysconfig/iptables,在-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT下面一行加入如下代码:

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT   #允许 80 端口通过防火墙

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT   #允许 3306 端口通过防火墙

保存后,重启防火墙:/etc/init.d/iptables restart  #最后重启防火墙使配置生效。

 2、关闭 SELINUX

vi /etc/selinux/config

#SELINUX=enforcing       #注释掉

#SELINUXTYPE=targeted    #注释掉

SELINUX=disabled         #增加

:wq  #保存,关闭

shutdown -r now   #重启系统

二、安装 MySQL

1、安装 MySQL

yum install mysql mysql-server   #询问是否要安装,输入 Y 即可自动安装,直到安装完成

/etc/init.d/mysqld start   #启动 MySQL

chkconfig mysqld on   #设为开机启动

cp /usr/share/mysql/my-medium.cnf   /etc/my.cnf  #拷贝配置文件(注意:如果/etc 目录下面默认有一个my.cnf,直接覆盖即可)

2、为 root 账户设置密码

mysql_secure_installation

回车,根据提示输入 Y

输入 2 次密码,回车

根据提示一路输入 Y

最后出现:Thanks for using MySQL!

MySql 密码设置完成,重新启动 MySQL:

/etc/init.d/mysqld restart #重启

/etc/init.d/mysqld stop   #停止

/etc/init.d/mysqld start #启动

三、安装 PHP5

1、安装 PHP5

yum install php

       根据提示输入 Y 直到安装完成  

2、安装 PHP 组件,使 PHP5 支持 MySQL

yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt

这里选择以上安装包进行安装

      根据提示输入 Y 回车

/etc/init.d/mysqld restart  #重启 MySql

/etc/init.d/httpd restart  #重启 Apche

 

配置篇

一、Apache 配置

vi /etc/httpd/conf/httpd.conf   #编辑文件

ServerTokens OS      在 44 行  修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)

ServerSignature On   在 536 行 修改为:ServerSignature Off (在错误页中不显示 Apache 的版本)

Options Indexes FollowSymLinks   在 331 行 修改为:Options Includes ExecCGI FollowSymLinks(允许服务器执行 CGI 及 SSI,禁止列出目录)

#AddHandler cgi-script .cgi  在 796 行 修改为:AddHandler cgi-script .cgi .pl (允许扩展名为.pl 的 CGI 脚本运行)

AllowOverride None   在 338 行 修改为:AllowOverride All (允许.htaccess)

AddDefaultCharset UTF-8  在 759 行 修改为:AddDefaultCharset GB2312  (添加 GB2312 为默认编码)

Options Indexes MultiViews FollowSymLinks  在 554 行 修改为 Options MultiViews FollowSymLinks(不在浏览器上显示树状目录结构)

DirectoryIndex index.html index.html.var  在 402 行 修改为:DirectoryIndex index.html index.htm Default.html Default.htm

index.php Default.php index.html.var   (设置默认首页文件,增加 index.php)

KeepAlive Off   在 76 行 修改为:KeepAlive On (允许程序性联机)

MaxKeepAliveRequests 100   在 83 行 修改为:MaxKeepAliveRequests 1000 (增加同时连接数) 

:wq!  #保存退出

/etc/init.d/httpd restart  #重启

rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html    #删除默认测试页

二、php 配置

vi  /etc/php.ini   #编辑

date.timezone = PRC     #在 946 行 把前面的分号去掉,改为 date.timezone = PRC

disable_functions

= passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,

ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,pope

n,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posi

x_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid,

posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,

posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty,

posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,

posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

 #在 386 行 列出 PHP 可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

expose_php = Off        #在 432 行 禁止显示 php 版本的信息

magic_quotes_gpc = On   #在 745 行 打开 magic_quotes_gpc来防止 SQL 注入

short_open_tag = ON     #在 229 行支持 php短标签

open_basedir = .:/tmp/  #在 380 行 设置表示允许访问当前目录(即 PHP 脚本文件所在之目录)和/tmp/目录,可以防止 php木马跨站,如果改了之后安装程序有问题(例如:织梦内容管理系统),可以注销此行,或者直接写上程序的目录/data/www.osyunwei.com/:/tmp/

:wq!  #保存退出

/etc/init.d/mysqld restart  #重启 MySql

/etc/init.d/httpd restart   #重启 Apche

 

测试篇

cd  /var/www/html

vi index.php   #输入下面内容

<?php

phpinfo();

?>

:wq!   #保存退出

在客户端浏览器输入服务器 IP地址,可以看到如下图所示相关的配置信息!

 

注意:apache 默认的程序目录是/var/www/html

权限设置:chown apache.apache -R /var/www/html

至此,CentOS 6.4 安装配置 LAMP 服务器(Apache+PHP5+MySQL)教程完成!

备注:上述教程偷学至互联网。 

 

标签: mysql apache CentOS LAMP PHP5

评论(1) 浏览(6537)

apache .htaccess强制访问手机,电脑页面

2013-6-9 寒川 计算机

首页页面为网站更目录m下,后门参数和pc页面参数一样的话就可以这样,否则可能需要修改一下。
手机访问电脑页面时跳转:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /m
RewriteCond %{HTTP_USER_AGENT} “android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos” [NC]
RewriteRule ^(.*)$ /m/$1 [L,R=302] [L,R=302]
</IfModule>
?
电脑访问手机时跳转:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC]
RewriteRule ^(.*)$ /$1 [L,R=302]

</IfModule>

最后得说一下,因为RewriteRule ^(.*)$ /m/$1 [L,R=302] [L,R=302]的加入,如果手机页面中要访问非手机页面中的资源时,得用正则排除指定文件,如: RewriteRule ^(.*?(?<!jpg)$) /m/$1 [L,R=302],就不会造成手机访问非手机页面中jpg图片时出现无法访问的问题了。


标签: 手机 apache 电脑 htaccess 重写

评论(1) 浏览(14877)

mysql命令导入导出.sql文件

2010-2-5 寒川 计算机

phpmyadmin是个不错的东西,能方便地建立、删除数据库数据表,导入导出也十分方便,但是遇到较大的.sql文件的时候就有点了。为此,学习点mysql基本命令还是很有必要的。

    1、mysql导入命令:
    先登录mysql数据库控制台:
    mysql -u root -h 127.0.0.1  -p
    使用数据库:
    mysql>use 数据库;
 然后使用source命令,导入数据库:
 mysql>source c:\test.sql;

       2、mysql导出命令:
    导出整个数据库: mysqldump -u 用户名 -p 数据库名 > 导出的文件名
     .导出一个表: mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
     导出一个数据库结构:mysqldump -u atyu -p -d --add-drop-table bbs >c:\test.sql

标签: mysql 服务器 数据库 apache

评论(0) 浏览(14277)

Powered by emlog 蜀ICP备12030225号

川公网安备 51042102000001号

sitemap