文档章节

制作已签名的Debian仓库

anglix
 anglix
发布于 2015/11/19 13:56
字数 819
阅读 483
收藏 3
点赞 0
评论 0

普通仓库

  • 以 Debian 8 / Jessie 为例,使用官方的ISO里的软件包制作apt仓库
apt-get -y install nginx reprepro dpkg-sig
mkdir -pv /data/file /mnt/d{1,2,3} /data/mirror/debian/conf

下载DVD镜像

wget -P /data/file http://mirrors.yun-idc.com/debian-cd/current/amd64/iso-dvd/debian-8.2.0-amd64-DVD-{1,2,3}.iso

挂载到本地

mount -t iso9660 -o ro,loop /data/file/debian-8.2.0-amd64-DVD-1.iso /mnt/d1
mount -t iso9660 -o ro,loop /data/file/debian-8.2.0-amd64-DVD-2.iso /mnt/d2
mount -t iso9660 -o ro,loop /data/file/debian-8.2.0-amd64-DVD-3.iso /mnt/d3

创建仓库

  • reprepro 根据 distributions 生成仓库:
head -9 /mnt/d1/dists/jessie/Release | sed '/Date:/d' - > /data/mirror/debian/conf/distributions
reprepro -Vb /data/mirror/debian includedeb jessie $(find /mnt/d{1,2,3}/pool/ -type f -name "*.deb")

提供HTTP服务

  • 安装Nginx并修改配置指向仓库根目录,/etc/nginx/nginx.conf 片段配置:
server {
        listen       80 backlog=8192; # backlog代表此端口允许同时打开(tcp_syn)的最大值
        server_name  mirrors.biliops.com;
        charset utf-8;
        location / { 
                root /data/mirror;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
                access_log  /data/log/nginx/access.log; #访问过程不记日志
        }
        location ~ ^(.*)\/\.(svn|git|hg|bzr|cvs)\/ { # 屏蔽这些目录
                deny all;
                access_log off;
                log_not_found off;
        }
        location ~ /\. { # 屏蔽.开头的目录或文件,比如  .htaccess .bash_history
                deny all;
                access_log off;
                log_not_found off;
        }
}

测试使用

  • 修改 /etc/apt/sources.list 指向 mirrors.biliops.com
deb http://mirrors.biliops.com/debian jessie main contrib
  • 更新本地源数据
apt-get update

仓库签名

制作签名

  • 生成自定义密钥:
gpg --gen-key
# Real name: mirror-key
# gpg: directory `~/.gnupg' created
# gpg: new configuration file `~/.gnupg/gpg.conf' created
# gpg: WARNING: options in `~/.gnupg/gpg.conf' are not yet active during this run
# gpg: keyring `~/.gnupg/secring.gpg' created
# gpg: keyring `~/.gnupg/pubring.gpg' created
# Not enough random bytes available.
rngd -r /dev/urandom -o /dev/random -f -t 1
  • 查看密钥:
gpg --list-keys 
gpg --list-secret-keys 
apt-key list
  • 备份和恢复:
gpg -o ~/gpg-pub.key -a --export mirror-key # 导出公钥
gpg -o ~/gpg-sec.key -a --export-secret-keys mirror-key # 导出私钥
gpg --import ~/gpg-sec.key ~/gpg-pub.key # 恢复公、私钥

给仓库签名

  • 实际上就在配置里加上 SignWith: mirror-key,然后重新生成源数据即可:
head -9 /mnt/d1/dists/jessie/Release | sed 's/^Date:.*/SignWith: mirror-key/g' - > /data/mirror/debian/conf/distributions
# rm -rfv /data/mirror/debian/{db,dists,lists} # 可删除
reprepro -Vb /data/mirror/debian export jessie 

测试仓库的签名

  • 客户端需要导入公钥,否则无法使用 apt-get update

无法验证签名

  • 导入公钥即可正常使用,apt-key add
wget -q -O - mirrors.biliops.com/gpg-pub.key | sudo apt-key add -

导入密钥

  • 至此,我们的仓库需要有签名才能使用啦!

打包签名

  • 如果仓库不需要签名,可以只对指定的软件包签名。需要 dpkg-sig 打,示例:
dpkg-sig -k mirror-key --sign higkoo $(find /data/mirror/debian/pool -type f -name "*.deb")

手动打签名

  • 爱折腾的话,手动打签名脚本可参考:
#!/bin/bash
if [ "$1" == "checksum_md5" ]; then
	printf ' '$(md5sum $2 | cut --delimiter=' ' --fields=1)' %16d '$2'\n' $(wc --bytes $2 | cut --delimiter=' ' --fields=1)
	exit 0
elif [ "$1" == "checksum_sha1" ]; then
	printf ' '$(sha1sum $2 | cut --delimiter=' ' --fields=1)' %16d '$2'\n' $(wc --bytes $2 | cut --delimiter=' ' --fields=1)
	exit 0
elif [ "$1" == "checksum_sha256" ]; then
	printf ' '$(sha256sum $2 | cut --delimiter=' ' --fields=1)' %16d '$2'\n' $(wc --bytes $2 | cut --delimiter=' ' --fields=1)
	exit 0
fi
BASEDIR=/data/mirror/debian
HEADER=${BASEDIR}/conf/main-info
OS_CODENAME=jessie
SELF_SCRIPT="`pwd`/$0"
cd ${BASEDIR}
dpkg-scanpackages pool/${OS_CODENAME} 2>/tmp/deb.log | tee dists/${OS_CODENAME}/main/binary-amd64/Packages | gzip -9c > dists/${OS_CODENAME}/main/binary-amd64/Packages.gz
cat dists/${OS_CODENAME}/main/binary-amd64/Packages | bzip2 -9c > dists/${OS_CODENAME}/main/binary-amd64/Packages.bz2
cd ${BASEDIR}/dists/${OS_CODENAME}
/bin/cp -fv ${HEADER} ${BASEDIR}/dists/${OS_CODENAME}/binary-amd64/Release
/bin/cp -fv ${HEADER} Release
echo "MD5Sum:" >> Release
find main/ -type f | xargs -n 1 $SELF_SCRIPT checksum_md5 >> Release
echo "SHA1:" >> Release
find main/ -type f | xargs -n 1 $SELF_SCRIPT checksum_sha1 >> Release
echo "SHA256:" >> Release
find main/ -type f | xargs -n 1 $SELF_SCRIPT checksum_sha256 >> Release
rm Release.gpg InRelease
gpg --clearsign -o InRelease Release
gpg -abs -o Release.gpg Release

© 著作权归作者所有

共有 人打赏支持
anglix

anglix

粉丝 31
博文 35
码字总数 17615
作品 0
珠海
系统管理员
Docker搭建私有registry

----------------------------------------- 一、版本说明 二、Server配置(registry 仓库) 制作签名 安装registry 制作tag 上传测试 复制证书到Client 三、Client配置 添加hosts记录 下载测...

_诺千金 ⋅ 2017/10/13 ⋅ 0

Debian for armel 进展情况

目前制作的debian文件系统存在驱动问题,主要表现在触摸屏无法触控,鼠标,键盘无法使用,但是驱动设备节点的数据都可以正常输出,原因待查,解决起来可能会比较慢;其他硬件接口未使用,所以...

tsuibin ⋅ 2015/12/16 ⋅ 0

邮件服务解决方案 iRedMail-0.5.0-beta1 发布

开源邮件服务解决方案 iRedMail-0.5.0-beta1 发布了,支持 Debian 系统。现在支持的操作系统有:RHEL, CentOS, Debian。还将移植到 Ubuntu 系统。这个版本主要是加入了对 Debian (Lenny, 5.0...

红薯 ⋅ 2009/05/06 ⋅ 0

Zero Install 项目发布1.0版

Zero Install是一个去中心化的跨发行版软件安装系统,采用 LGPL授权。它让软件开发者直接在自己的网站上发布程序,功能上类似于中心化的发行仓库,支持共享库,自动更新和数字签名。它的初衷...

红薯 ⋅ 2011/05/24 ⋅ 1

【译】Metasploit:搭建开发环境

原文地址:https://github.com/rapid7/metasploit-framework/wiki/Setting-Up-a-Metasploit-Development-Environment 作者:Metasploit Community 译者:王一航 & Google 2018-06-15 校对:王......

王一航 ⋅ 06/15 ⋅ 0

CloudStack升级中文指南:4.1.x/4.2.x 至4.3版本

CloudStack升级中文指南: 4.1.x/4.2.x 至 4.3版本 本文翻译于官方文档,当考虑到众多朋友方便查阅,特翻译成中文供大家参考。 原文连接:http://docs.cloudstack.apache.org/projects/clou...

tangwenjun ⋅ 2014/03/27 ⋅ 0

精简压缩优化 Docker 镜像几百MB

转载:http://www.dockerinfo.net/3328.html 介绍 前段时间网易蜂巢曾经推出蜂巢 Logo T恤,用的正是 Docker 镜像制作,最神奇的是,它最终的镜像大小只有 585字节。 $ docker images grep h...

a1010256340 ⋅ 04/26 ⋅ 0

添加CA根证书到操作系统获得信任

现在很多网站和服务都使用了HTTPS进行链路加密、防止信息在传输中间节点被窃听和篡改。HTTPS的启用都需要一个CA证书,以保证加密过程是可信的。 我们可以申请和获得一个CA机构颁发的证书,在...

openthings ⋅ 2016/11/13 ⋅ 0

salt-Debian GNU/Linux / Raspbian-install

DEBIAN GNU/LINUX / RASPBIAN Debian GNU/Linux distribution and some derivatives such as Raspbian already have included Salt packages to their repositories. However, current stabl......

王景帅 ⋅ 2016/10/15 ⋅ 0

linux 更换 软件源后 GPG错误

linux 更换 软件源后 GPG错误 http://my.oschina.net/emptytimespace/blog/83633 如文章【1】中提到: 1,对于DEBIAN系: 如果您的套件支援APT-KEY金鑰管理(例如Ubuntu 6.06或者之後的版),請...

无明时空 ⋅ 2012/10/17 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

金山WPS发布了Linux WPS Office

导读 近日,金山WPS发布了Linux WPS Office中文社区版新版本,支持大部分主流Linux系统,功能更加完善,兼容性、稳定性大幅度提升。本次更新WPS将首次在Linux提供专业办公文件云存储服务,实...

问题终结者 ⋅ 昨天 ⋅ 0

springboot2输出metrics到influxdb

序 本文主要研究一下如何将springboot2的metrics输出到influxdb maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo......

go4it ⋅ 昨天 ⋅ 0

微信小程序 - 选择图片显示操作菜单

之前我分享过选择图片这个文章,但是我在实际开发测试使用中发现一个问题在使用 wx.chooseImage 选择照片显示出第一格是拍照,后面是相册里的图片。这种实现之前说过了,效果如下。 但是你从...

hello_hp ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部