美文网首页
svn服务器设置

svn服务器设置

作者: 博楠同学 | 来源:发表于2019-07-02 10:10 被阅读0次

    下面以ubuntu为例

    安装

    sudo  apt install subversion

    服务器端命令  与客户端命令

    服务器端命令   

    svnserve    控制svn系统服务的启动等

    svnadmin    版本库的创建  导入导出  删除等

    svnlook        查看版本库信息等

    客户端命令

          svn    版本库的检出    更新  提交  重定向等

    创建版本库

        svnadmin    create    /path/repos      路径加名称

        svnadmin create      --fs-type fsfs    /path/repos (建议这样创建)

    删除版本库

      rm -rf  /path/repos

    配置文件在 /path/repos/conf

          authz  配置用户组及用户组权限

          passwd  配置用户名和密码

        svnserve.conf    配置默认权限  权限配置文件  及密码配置文件

    svnserve.conf    一共有三种权限    none  read    write

    anon-access = none(未登录用户))

    auth-access = write(登录用户)

    passwd文件

    账号等于密码的形式来添加账号

    authz文件

    group添加用户组

    一行为一组      @组名 =  用户名,用户名 

    组名前不可以有特殊字符  例如空格  制表符 之类的

    [/]通用的权限

    多个版本库的时候想用同一个authz文件的时候可以指定svnserve.conf 文件中authz-db = authz文件的路径,可以多个版本库指向同一个authz配置文件

    [version:/]

    指定的版本库哪些人有哪些权限

    [version:/xxx]

    指定版本库的指定目录哪些人有哪些权限

    *代表所有人

    一个服务端  多个客户端

    运行svn服务

    svnserve  -d -r  /path/repos/

    svnserve -d -r hello --listen-port 3691  指定端口

    svn  checkout  -r  版本号    检出指定版本号

    svn add 目录/文件        递归添加的

    svn add  目录      --non-recursive      只添加目录

    svn  add  *          添加所有文件和目录 (目录本身在版本控制之下,不会再扫描)

    svn  add  *    --force  全部新增

     svn diff  -r 7:10 index.html    对比 版本为7和10的index.html文件的差异

     svn diff  -r 7  index.html  对比当前版本和版本7的差异

    svn cat svn://192.168.79.139/index.html

    svn revert index.html  还原一个文件

    svn revert *  还原当前目录下修改的文件

    svn revert --recursive *  还原当前目录下及子目录下的修改的文件

    提交冲突

    mc自己的版本,tc服务器上面的版本  p延迟处理

    选择p之后,如果以后想解决

    svn  list    --recursive  递归显示当前目录及子目录

    svn  status  状态前面字母的含义

    svn log

    多版本库

    tcp、ip协议规定端口号范围  0-65535号

    0-1023  为公认端口      http协议的默认是用80

    1024-49151  注册端口  绑定给知名的软件,例如mysql3306    svn  3690

    49152-65535    私有端口

    开启多个版本库,在一个目录下,创建多个版本库,svn服务启动的时候启动版本库的父目录

    或者http服务目录写版本库的父目录即可

    http和svn配合

    下载apache

    sudo  apt  install  apache2    libapache2-mod-svn

    新建一个配置文件在apache的默认配置目录一般是/etc/apache2/sites-enabled/  下

    <Location /svn>

        DAV svn

        #   SVNPath          

        SVNParentPath /home/zhang/svnroot

       # Limit write permission to list of valid users.

       #<LimitExcept GET PROPFIND OPTIONS REPORT> #注意这个要注释掉(这样就只有我们制定的用户可以看到)否则>所有的用户可以浏览下载

        AuthType Basic

     #使用基本认证方式,即用户名、密码认证

        AuthName "ros  auth"

     # 在认证对话框中出现的提示信息

        AuthUserFile /home/svn/svn.passwd

     # 指定上面创建好的存放用户名信息的文件路径

        Require valid-user

    # 限定只有用户输入正确的用户名和密码后才能访问该标签所指向的路径

       #</LimitExcept>

        AuthzSVNAccessFile /home/svn/authz

    #  权限控制

    </Location>

    svn通过http访问  ,创建账号密码

    htpasswd -c /home/svn/svn.passwd  zhang

    修改密码

    htpasswd -m /home/svn/svn.passwd  zhang

    删除账号

    htpasswd -D  /home/svn/svn.passwd  zhang

    上面可以实现http访问svn的方式

    下面配置https

    ubuntu

    a2enmod  ssl 

    或者手动ssl.conf,ssl.load,socache_shmcb.load软连接三个文件到mods-enabled中

    ln -s  /etc/apache2/sites-available/ssl.conf  /etc/apache2/sites-enabled/ssl.conf

    如需要访问http的时候直接跳转https

    需要开启rewrite模块

    sites-available建立软连接或者通过a2enmod rewrite命令直接建立软连接

    #先建立一个conf,监听80端口

    <VirtualHost *:80>

    ServerName_

    RewriteEngine on  #开启重写引擎

    #重写条件:不为https时的url才执行跳转

    RewriteCond %{SERVER_PORT} !^443$ 

    #域名中不包含"api"的话就重定向 (这个适用于既有http又有https的时候可以使用这种方式)

    #RewriteCond %{REQUEST_URI} !^/api

    #跳转到当前serverName的https

    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] 

    </VirtualHost>

    可以实现https的配置,最后倒入购买的ssl证书

    关于安全

    # 添加 SSL 协议支持协议,去掉不安全的协议

    SSLProtocol all -SSLv2 -SSLv3

    # 修改加密套件如下

    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM

    SSLHonorCipherOrder on

    # 证书公钥配置

    SSLCertificateFile cert/public.pem

    # 证书私钥配置

    SSLCertificateKeyFile cert/xxxxxxx.key

    # 证书链配置,如果该属性开头有 '#'字符,请删除掉(启动不了apache就注释掉吧)

    SSLCertificateChainFile cert/chain.pem

    隐藏apache的版本号

    修改/etc/apache2/conf-enabled/security.conf

    修改为下面2个值

    ServerTokens Prod

    ServerSignature Off 

    客户端使用建议: 

    1、使用export 而不是co 导出目录树

    2、co检出的目录树不能放在web根目录

    3、如果必须要放在web根目录需要添加.svn目录禁止访问的限制

    apache

    <Directory ~ "\.svn">

    Order allow,deny

    Deny from all

    </Directory>

          nginx

              location ~ ^(.*)\/\.svn\/ {

      return 404;

        }

    说明:

          如只想想用http  或者https协议来访问,只需关闭svn服务即可

        使用命令:

                sudo killall  svnserve

    以上使用apt安装的情况,如使用编译安装,需文件的目录需要使用编译安装时的目录

    HTTPS双向认证

    1、创建目录

    mkdir /etc/apache2/ca/private  /etc/apache2/ca/certificates

    cd /etc/apache2/ca

    2、创建ca私钥

        openssl genrsa -aes256 -out private/ca.key.pem 2048 

     3、创建ca签名请求

      openssl req -new -key private/ca.key.pem -out private/ca.csr -subj "/C=CN/ST=SZ/L=SZ/O=nsfocus/OU=nsfocus/CN=*"

    subj这个参数CN这个比较重要

    例如 把*修改为*.nsfocus.com    代表可以使用ca签发update.nsfocus.com    api.nsfocus.com....

    4、签发ca根证书

    openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey private/ca.key.pem -in private/ca.csr -out certificates/ca.cer

    ca.cer为根证书,这个特别重要

    5、根证书pem转码为PKCS

    openssl pkcs12 -export -cacerts -inkey private/ca.key.pem -in certificates/ca.cer -out certificates/ca.p12 

    很多浏览器也不行,所以有时候也需要转一下编码 

    得到的ca.p12就是转码后的CA根证书,在不能直接用ca.cer的时候,就用ca.p12代替

    6、创建服务器端的证书

    openssl genrsa -aes256 -out private/server.key.pem 2048

    7、创建服务器端的签发请求

        openssl req -new -key private/server.key.pem -out private/server.csr -subj "/C=CN/ST=SZ/L=SZ/O=nsfocus/OU=nsfocus/CN=10.5.3.25"

    8、利用CA根证书签发服务端证书

        openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA certificates/ca.cer -CAkey private/ca.key.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out certificates/server.cer

    server.cer为服务器端证书

    9、双向验证配置

    SSLEngine on

    SSLCertificateFile      /etc/apache2/ca/certificates/server.cer

                  SSLCertificateKeyFile /etc/apache2/ca/private/server.key.pem

      SSLCACertificateFile /etc/apache2/ca/certificates/ca.cer

                SSLVerifyClient require

                 SSLVerifyDepth  10

    注意现在访问的话访问不了的,需要把用户证书导入到浏览器才可以访问

    10、用户证书

    1、服务器端给把证书制作好,发给客户

    2、把ca根证书发给客户,让客户自己签发一个证书

          (1)创建客户私钥

                  openssl genrsa -aes256 -out private/client.key.pem 2048  

    (2)创建客户签发请求

    openssl req -new -key private/client.key.pem -out private/client.csr -subj "/C=CN/ST=SZ/L=SZ/O=nsfocus/OU=nsfocus/CN=10.5.3.25"

                (3)   利用ca根证书签发客户证书

    openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA certificates/ca.cer -CAkey private/ca.key.pem -CAserial ca.srl -CAcreateserial -in private/client.csr -out certificates/client.cer 

              (4)把客户证书转换为p12格式

    openssl pkcs12 -export -clcerts -inkey private/client.key.pem -in certificates/client.cer -out certificates/client.p12  

    客户端把client.p12导入小乌龟即可

    导入方法,

    1、新建一个目录用来保存从服务器端获取的目录树

    2、进入到这个新建的文件夹

    3、右键选择

        4、会出现如下界面

    红框内输入svn 路径,点击ok

    5、会弹出一个永久和临时导入证书的页面选择哪个都可以

      这时会出现让你选择证书的界面

    6、把服务器端签发的证书导入,输入签发证书的密码

    7、输入后即可获得服务器端目录树

    相关文章

      网友评论

          本文标题:svn服务器设置

          本文链接:https://www.haomeiwen.com/subject/pnnlaqtx.html