SVN配置https访问 - linux服务器

CentOS服务器部署svn+apache http + ssl https访问

  • 一、配置https请求访问SVN
    • 1.1 安装SSL模块
    • 1.2 生成服务端数字证书
    • 1.3 生成客户端数字证书
    • 1.4 生成CA证书文件
    • 1.5 利用CA证书进行签名
    • 1.6 配置证书
    • 1.7 配置https请求
    • 1.8 重启验证
  • 二、异常处理

linux服务器搭建svn+apache+ssl部署环境:
1、linux下svn安装与使用参考链接:linux服务器svn安装与版本控制.
2、linu下svn配置http访问服务参考链接:linux服务器svn配置http访问.
3、linux svn设置开机自启动参考链接: linux svn设置开机自启动.
4、Linux下设置apache httpd服务为自动启动参考链接: Linux下设置apache httpd服务为自动启动.
5、 linux下svn命令使用大全参考链接: linux下svn命令使用大全.

一、配置https请求访问SVN

  通过http访问svn版本库虽然方便,但是http协议均采用明文传输,随便在网络上抓包用户名和密码就可能被泄露了,所以考虑采用https传输,安全性比较高,也就是apache+svn+ssl。希望svn支持https,主要的工作是配置 SSL协议(Secure Sockets Layer 安全套接层)

配置https请求需要先安装apache,配置http访问: linu下svn配置http访问.

1.1 安装SSL模块

未安装SSL模块的,参考以下步骤进行安装:

# 查看ssl是否已安装
openssl version
#未安装的安装openssl
yum -y install openssl
#查看apache是否已经安装了ssl_module
apachectl -t -D DUMP_MODULES|grep ssl
#安装ssl_module模块
yum -y install mod_ssl

1.2 生成服务端数字证书

以下步骤必须在特定文件夹下产生所需的文件,保证输入命令正确,保证产生文件所在文件夹正确,否则后面将发生错误

1、确认文件是否已存在:

#进入目录
cd /etc/pki/CA
# ls查看目录下是否有index.txt    serial这两个文件
ls 
#如果没有index.txt,创建
touch /etc/pki/CA/index.txt
# 如果没有serial,创建serial号文件
echo 00 > /etc/pki/CA/serial

2、生成证书

#进入目录
cd /etc/pki/CA
#(1)生成服务器端    私钥(key文件);
openssl genrsa -des3 -out private/svn_server.key 1024
#这里我的密码设置为:math123456

  运行时会提示输入密码,此密码用于加密key文件(参数des3是加密算法,也可以选用其他安全的算法),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令。
如果不要口令,则使用命令去除口令:
openssl rsa -in svn_server.key -out svn_server_1.key

SVN配置https访问 - linux服务器_第1张图片

#(2)生成服务器端  证书签名请求文件(csr文件);
openssl req -new -key private/svn_server.key -out certs/svn_server.csr

  生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其 提示一步一步输入要求的个人信息即可(如:Country,province,city,company等).
SVN配置https访问 - linux服务器_第2张图片
示例:
SVN配置https访问 - linux服务器_第3张图片

1.3 生成客户端数字证书

#1.生成客户端     私钥(key文件);
openssl genrsa -des3 -out private/svn_client.key 1024
2.生成客户端 证书签名请求文件(csr文件);
openssl req -new -key private/svn_client.key -out certs/svn_client.csr
#注意这里的commonName要与服务端的域名不同(随便取一个)

SVN配置https访问 - linux服务器_第4张图片

1.4 生成CA证书文件

server.csr与client.csr文件必须有CA的签名才可形成证书.

#1.首先生成CA的key文件:
[root@localhost CA]#openssl genrsa -des3 -out ca.key 1024
#2.生成CA自签名证书:    可以加证书过期时间选项 "-days 365".
 openssl req -new -x509 -key ca.key -out ca.crt
 #注意:注意这里的commonName要与服务端的域名相同

SVN配置https访问 - linux服务器_第5张图片

1.5 利用CA证书进行签名

openssl ca -in certs/svn_server.csr -out certs/svn_server.crt -cert ca.crt -keyfile ca.key
openssl ca -in certs/svn_client.csr -out certs/svn_client.crt -cert ca.crt -keyfile ca.key

SVN配置https访问 - linux服务器_第6张图片
SVN配置https访问 - linux服务器_第7张图片

1.6 配置证书

  执行命令cd /etc/httpd/conf.d/,查看该目录下是否有ssl.conf或者httpd-ssl.conf,如果没有该文件,则需要确认是否已正确安装了ssl_module模块。
编辑配置文件ssl.conf:

gedit /etc/httpd/conf.d/ssl.conf

根据需要编辑以下属性,其中证书文件位置是必须要正确指定的:

#443为默认端口,可指定为其他端口
Listen 443
SSlRandomSeed startup builtin
#指定日志文件位置
ErrorLog logs/ssl_error_log
#指定日志等级
Loglevel warn

#指定域名 - 前面生成证书时填写的域名 
ServerName localhost.localdomain
SSLEngine on
#指定证书文件位置
SSLCertificateFile /etc/pki/CA/certs/svn_server.crt
SSLCertificateKeyFile /etc/pki/CA/private/svn_server_1.key

1.7 配置https请求

gedit /etc/httpd/conf/httpd.conf

在如下位置添加https请求:SSLRequireSSL


Options FollowSymLinks
AllowOverride None
#添加此行
SSLRequireSSL 

1.8 重启验证

# 会提示输入证书密码,输入后即可成功启动
systemctl restart httpd.service
 #查看https是否启动成功
netstat -ntpl|grep 443      
#重启svn服务
pkill svnserve
svnserve -d -r /opt/svn/mathPhysics/
ps -ef|grep svnserve

在浏览器输入网址:https://ip地址:端口号/svn/svn目录/
由于我们自签名的证书不受信任,此时会出现不安全标志,打开高级设置,为此添加信任即可访问。
我的输入网址:https://192.168.0.100/svn/mathPhysics/
SVN配置https访问 - linux服务器_第8张图片

二、异常处理

  如果以上操作后,访问仍然有异常,可以查看apach的error日志,根据日志记录情况进行处理。要找到自定义的日志文件位置,
1、请用文本编辑器打开 gedit /etc/httpd/conf/httpd.conf,然后查找 ServerRoot,该参数显示了 Apache Web 服务器目录树的顶层,日志文件和配置都位于该目录树中。例如:

ServerRoot "/etc/httpd"

2、请用文本编辑器打开 gedit /etc/httpd/conf.d/ssl.conf,然后,查找 ErrorLog 开头的行,该行指出了 Apache Web 服务器将错误日志写到了哪里去。注意,指定的位置是 ServerRoot 值的相对位置。例如:

ErrorLog logs/ssl_error_log

结合上面的两个指令,可以获得完整的ssl访问的错误日志路径,默认情况下该路径就是: /etc/httpd/logs/ssl_error_log
在全新安装的Apache中,这是一个到 /var/log/httpd/errorlog 的符号链接。

在实际情况中, ErrorLog 可能指向你 Linux 系统中的任意位置。

2、查看日志文件,定位问题:gedit 日志文件,如gedit /etc/httpd/logs/ssl_error_log

你可能感兴趣的:(linux,linux,svn,centos)