CentOS 6.4에서 타원 곡선을 사용하여 openssl 재구축
전략은 다음과 같습니다.
1) Download the "official" CentOS source package (.src.rpm)
2) Modify the .spec file to enable elliptic curves. (change no-EC to enable-EC)
3) Rebuild the package using mock.
빌드는 새로운 Amazon 클라우드 서버에서 수행되었으며 누구나 아래에서 수행된 모든 단계를 정확하게 재현할 수 있습니다.
# 1. Log into AWS (Amazon Web Services) and create a public key.
# 2. Download your public key and install into your local client e.g. putty or ssh.
# 3. Instantiate a CentOS 6.4 machine using AWS marketplace for machine images. (free)
# 4. Log into your new Centos 6.4 using ssh or putty, update and install a few packages:
새로 설치된 Centos 업데이트 및 개발 도구 설치
yum -y update # Update all packages on a new machine
yum -y groupinstall 'Development tools'
Fedora EPEL 저장소에서 슈퍼 패키지 빌더인 Mock을 설치합니다. Mock은 CentOS(및 기타 여러 배포판)의 패키지 빌더의 비밀 무기입니다.
yum -y localinstall --nogpgcheck http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # Install EPEL (EL6 extra packages) repository
yum -y install fedora-packager # Install mock from EPEL repository
"mock" 그룹에 새 사용자 "abcd"를 추가합니다. 사용자 abcd는 패키지 재구축에 사용됩니다. 참고: fedora-packager를 설치할 때 yum은 자동으로 "mock" 그룹을 생성했습니다.
userdel -rf abcd ; useradd -G mock abcd ; su abcd
최신 CentOS openssl 소스 패키지를 다운로드하고 mock으로 "압축 해제"하십시오.
cd ~ ; curl -O http://vault.centos.org/6.4/os/Source/SPackages/openssl-1.0.0-27.el6.src.rpm
/usr/bin/mock --rebuild ~/openssl-1.0.0-27.el6.src.rpm
다음과 같은 출력 라인이 표시됩니다.
# INFO: mock.py version 1.1.32 starting...
# Start: build setup for openssl-1.0.0-27.el6.src.rpm
# Start: rpmbuild -bb openssl-1.0.0-27.el6.src.rpm
# Start: Outputting list of installed packages
드디어 오랜 시간 끝에 보게 된
# INFO: Results and/or logs in: /var/lib/mock/epel-6-x86_64/result
모의 빌드 결과를 안전한 위치로 이동
rm -rf /home/abcd/build ; mv /var/lib/mock/epel-6-x86_64/root/builddir/build/ /home/abcd ; # Move to a safe place
openssl.org에서 대체 소스 파일(.tar.gz) 및 패치 파일을 다운로드합니다.
cd /home/abcd/build/SOURCES
curl -O http://www.openssl.org/source/openssl-1.0.0.tar.gz # Download corresponding source tarball from openssl
curl -o patch300.patch http://cvs.openssl.org/patchset?cn=19998 # Download this patch to fix a test error
openssl.spec 파일을 편집하여
# 1. Enable elliptic curves (enable-EC)
# 2. Disable the hobble-openssl script (which erases EC files)
# 3. Update the release mumber to .EC.1
# 4. Include the newly downloaded .tar.bz as source
# 5. Include the newly downloaded patch file
cd ../SPECS
sed -i -e "s/no-ec/enable-ec/; s/no-ecdh/enable-ecdh/; s/no-ecdsa/enable-ecdsa/" openssl.spec # Enable EC
sed -i -e "s/^Source1: hobble-openssl/#&/; s/^%.SOURCE1. /#&/" openssl.spec # Disable the "hobble" script
sed -i -e "s/^Release.*dist\}/&.EC.1/" openssl.spec # Also change release number by adding .EC.1
sed -i -e "s/-usa.tar.bz2/.tar.gz/" openssl.spec # Change the source tarball
sed -i -e "s/^Patch78.*/&\nPatch300: patch300.patch\n/" openssl.spec # Add the new patch
sed -i -e "s/^%patch78.*/&\n%patch300 -p1 \n/" openssl.spec # Add the new patch again
편집된("enable-EC") openssl.spec을 사용하여 새 소스 패키지를 생성합니다.
/usr/bin/mock --buildsrpm --spec ~/build/SPECS/openssl.spec --sources ~/build/SOURCES # Do a source rebuild
새 소스 코드 패키지를 사용하여 새 openssl 패키지를 만듭니다.
cp /var/lib/mock/epel-6-x86_64/root/builddir/build/SRPMS/openssl-1.0.0-27.el6.EC.1.src.rpm /home/abcd
cd ~ ; /usr/bin/mock --rebuild openssl-1.0.0-27.el6.EC.1.src.rpm
여기에 요약 http://pastebin.centos.org/3070
감사해요페탈링자야Freenode에서 모든 도움말을 찾아보세요.