2 # - consider dropping last optflags.patch hunk and return to SOMAJOR (.so.1) sonames
3 # - find a way to simplify (drop) openssl-optflags.patch, it's pain to update here in pld
6 %bcond_without tests # don't perform "make tests"
7 %bcond_without zlib # zlib: note - enables CVE-2012-4929 vulnerability
8 %bcond_without sslv2 # SSLv2: note - many flaws http://en.wikipedia.org/wiki/Transport_Layer_Security#SSL_2.0
9 %bcond_without sslv3 # SSLv3: note - enables CVE-2014-3566 vulnerability
10 %bcond_with purify # Compile openssl with "-DPURIFY", useful when one wants to
11 # use valgrind debugger against openssl-linked programs
12 %bcond_with snap # use GitHub snapshot to build branch release
16 %include /usr/lib/rpm/macros.perl
17 Summary: OpenSSL Toolkit libraries for the "Secure Sockets Layer" (SSL v2/v3)
18 Summary(de.UTF-8): Secure Sockets Layer (SSL)-Kommunikationslibrary
19 Summary(es.UTF-8): Biblioteca C que suministra algoritmos y protocolos criptográficos
20 Summary(fr.UTF-8): Utilitaires de communication SSL (Secure Sockets Layer)
21 Summary(pl.UTF-8): Biblioteki OpenSSL (SSL v2/v3)
22 Summary(pt_BR.UTF-8): Uma biblioteca C que fornece vários algoritmos e protocolos criptográficos
23 Summary(ru.UTF-8): Библиотеки и утилиты для соединений через Secure Sockets Layer
24 Summary(uk.UTF-8): Бібліотеки та утиліти для з'єднань через Secure Sockets Layer
26 # 1.0.2 will be LTS release
27 # Version 1.0.2 will be supported until 2019-12-31.
28 # https://www.openssl.org/about/releasestrat.html
34 #Source0: ftp://ftp.openssl.org/source/%{name}-%{version}.tar.gz
35 Source0: https://www.openssl.org/source/%{name}-%{version}-%{subver}.tar.gz
36 # Source0-md5: 5073f45b5922992234396c7d8247196f
38 Source1: https://github.com/openssl/openssl/archive/OpenSSL_1_0_2-stable/%{name}-%{version}-dev.tar.gz
41 Source3: %{name}-ssl-certificate.sh
42 Source4: %{name}-c_rehash.sh
43 Patch0: %{name}-alpha-ccc.patch
44 Patch1: %{name}-optflags.patch
45 Patch2: %{name}-include.patch
46 Patch3: %{name}-man-namespace.patch
47 Patch4: %{name}-asflag.patch
48 Patch5: %{name}-ca-certificates.patch
49 Patch6: %{name}-ldflags.patch
50 Patch7: %{name}-find.patch
52 Patch10: %{name}_fix_for_x32.patch
53 URL: http://www.openssl.org/
55 BuildRequires: perl-devel >= 1:5.6.1
56 BuildRequires: rpm-perlprov >= 4.1-13
57 BuildRequires: rpmbuild(macros) >= 1.213
58 BuildRequires: sed >= 4.0
59 Requires: ca-certificates >= 20120623-1.1
60 Requires: rpm-whiteout >= 1.7
62 Obsoletes: SSLeay-devel
63 Obsoletes: SSLeay-perl
64 Obsoletes: libopenssl0
65 %if "%{pld_release}" == "ac"
66 Conflicts: neon < 0.26.3-3
67 Conflicts: ntpd < 4.2.4p8-10
68 Conflicts: openssh-clients < 2:5.8p1-9
69 Conflicts: openssh-server < 2:5.8p1-9
71 Conflicts: neon < 0.29.6-8
72 Conflicts: openssh-clients < 2:6.2p2-3
73 Conflicts: openssh-server < 2:6.2p2-3
75 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
78 The OpenSSL Project is a collaborative effort to develop a robust,
79 commercial-grade, full-featured, and Open Source toolkit implementing
80 the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS
81 v1) protocols with full-strength cryptography world-wide. The project
82 is managed by a worldwide community of volunteers that use the
83 Internet to communicate, plan, and develop the OpenSSL tookit and its
84 related documentation.
86 OpenSSL is based on the excellent SSLeay library developed by Eric A.
87 Young and Tim J. Hudson. The OpenSSL toolkit is licensed under an
88 Apache-style licence, which basically means that you are free to get
89 and use it for commercial and non-commercial purposes subject to some
90 simple license conditions.
92 This package contains shared libraries only, install openssl-tools if
93 you want to use openssl cmdline tool.
95 %description -l de.UTF-8
96 Openssl enthält das OpenSSL Zertifikatsmanagementtool und shared
97 libraries, die verschiedene Verschlüsselungs- und
98 Entschlüsselungsalgorithmen und -protokolle, wie DES, RC4, RSA und SSL
99 zur Verfügung stellen.
101 %description -l es.UTF-8
102 Biblioteca C que suministra algoritmos y protocolos criptográficos.
104 %description -l fr.UTF-8
105 OpenSSL est un outiil de gestion des certificats et les librairies
106 partagees qui fournit plusieurs protocoles et algorithmes de
107 codage/decodage, incluant DES, RC4, RSA et SSL.
109 %description -l pl.UTF-8
110 Implementacja protokołów kryptograficznych Secure Socket Layer (SSL)
111 v2/v3 oraz Transport Layer Security (TLS v1).
113 %description -l pt_BR.UTF-8
114 Uma biblioteca C que fornece vários algoritmos e protocolos
115 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas
116 compartilhadas e utilitários.
118 %description -l ru.UTF-8
119 Программа openssl для работы с сертификатами и разделяемые библиотеки,
120 которые реализуют множетсво криптографических алгоритмов, включая DES,
123 %description -l uk.UTF-8
124 Програма openssl для роботи з сертифікатами та бібліотеки спільного
125 користування, що реалізують велику кількість криптографічних
126 алгоритмів, включаючи DES, RC4, RSA та SSL.
129 Summary: OpenSSL optional crypto engines
130 Summary(pl.UTF-8): Opcjonalne silniki kryptograficzne dla OpenSSL-a
132 Requires: %{name} = %{version}-%{release}
135 With OpenSSL 0.9.6, a new component was added to support alternative
136 cryptography implementations, most commonly for interfacing with
137 external crypto devices (eg. accelerator cards). This component is
140 There are currently built-in ENGINE implementations for the following
149 In addition, dynamic binding to external ENGINE implementations is now
150 provided by a special ENGINE called "dynamic".
152 %description engines -l pl.UTF-8
153 Począwszy od OpenSSL-a 0.9.6 został dodany nowy komponent, mający
154 wspierać alternatywne implementacje kryptografii, przeważnie
155 współpracujące z zewnętrznymi urządzeniami kryptograficznymi (np.
156 kartami akceleratorów). Komponent ten jest nazywany SILNIKIEM (ang.
159 Obecnie istnieją wbudowane implementacje silników dla następujących
160 urządzeń kryptograficznych:
167 Ponadto zapewnione jest dynamiczne wiązanie dla zewnętrznych
168 implementacji silników poprzez specjalny silnik o nazwie "dynamic".
171 Summary: OpenSSL command line tool and utilities
172 Summary(pl.UTF-8): Zestaw narzędzi i skryptów
173 Group: Applications/Communications
174 Requires: %{name} = %{version}-%{release}
178 The OpenSSL Toolkit cmdline tool openssl and utility scripts.
180 %description tools -l pl.UTF-8
181 Zestaw narzędzi i skryptów wywoływanych z linii poleceń.
184 Summary: OpenSSL utilities written in Perl
185 Summary(pl.UTF-8): Narzędzia OpenSSL napisane w perlu
186 Group: Applications/Communications
187 Requires: %{name} = %{version}-%{release}
189 %description tools-perl
190 OpenSSL Toolkit tools written in Perl.
192 %description tools-perl -l pl.UTF-8
193 Narzędzia OpenSSL napisane w perlu.
196 Summary: Development part of OpenSSL Toolkit libraries
197 Summary(de.UTF-8): Secure Sockets Layer Kommunikationslibrary: statische libraries+header
198 Summary(es.UTF-8): Bibliotecas y archivos de inclusión para desarrollo OpenSSL
199 Summary(fr.UTF-8): Librairies statiques, headers et utilitaires pour communication SSL
200 Summary(pl.UTF-8): Część bibiloteki OpenSSL przeznaczona dla programistów
201 Summary(pt_BR.UTF-8): Bibliotecas e arquivos de inclusão para desenvolvimento OpenSSL
202 Summary(ru.UTF-8): Библиотеки, хедеры и утилиты для Secure Sockets Layer
203 Summary(uk.UTF-8): Бібліотеки, хедери та утиліти для Secure Sockets Layer
204 Group: Development/Libraries
205 Requires: %{name} = %{version}-%{release}
206 Obsoletes: libopenssl0-devel
209 Development part of OpenSSL library.
211 %description devel -l es.UTF-8
212 Bibliotecas y archivos de inclusión para desarrollo OpenSSL
214 %description devel -l pl.UTF-8
215 Część biblioteki OpenSSL przeznaczona dla programistów.
217 %description devel -l pt_BR.UTF-8
218 Uma biblioteca C que fornece vários algoritmos e protocolos
219 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas e
220 arquivos de inclusão para desenvolvimento.
222 %description devel -l ru.UTF-8
223 Программа openssl для работы с сертификатами и разделяемые библиотеки,
224 которые реализуют множетсво криптографических алгоритмов, включая DES,
225 RC4, RSA и SSL. Включает библиотеки и хедеры для разработки приложений
226 с использованием SSL.
228 %description devel -l uk.UTF-8
229 Програма openssl для роботи з сертифікатами та бібліотеки спільного
230 користування, що реалізують велику кількість криптографічних
231 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить бібліотеки та
232 хедери для розробки програм з використанням SSL.
235 Summary: Static OpenSSL libraries
236 Summary(pl.UTF-8): Statyczne wersje bibliotek z OpenSSL
237 Summary(pt_BR.UTF-8): Bibliotecas estáticas para desenvolvimento com openssl
238 Summary(ru.UTF-8): Статические библиотеки разработчика для OpenSSL
239 Summary(uk.UTF-8): Статичні бібліотеки програміста для OpenSSL
240 Group: Development/Libraries
241 Requires: %{name}-devel = %{version}-%{release}
244 Static OpenSSL Toolkit libraries.
246 %description static -l pl.UTF-8
247 Statyczne wersje bibliotek z OpenSSL.
249 %description static -l pt_BR.UTF-8
250 Bibliotecas estáticas para desenvolvimento com openssl.
252 %description static -l ru.UTF-8
253 Программа openssl для работы с сертификатами и разделяемые библиотеки,
254 которые реализуют множетсво криптографических алгоритмов, включая DES,
255 RC4, RSA и SSL. Включает статические библиотеки для разработки
256 приложений с использованием OpenSSL.
258 %description static -l uk.UTF-8
259 Програма openssl для роботи з сертифікатами та бібліотеки спільного
260 користування, що реалізують велику кількість криптографічних
261 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить статичні
262 бібліотеки для розробки програм з використанням SSL.
267 mv %{name}-OpenSSL_1_0_2-stable/* .
269 %setup -q %{?subver:-n %{name}-%{version}-%{subver}}
271 #%patch0 -p1 # alpha patch from year 2000 - drop it
272 #%patch1 -p1 # flags list has been nuked (thank god!)
273 #%patch2 -p1 # openssl include subdir. check this
274 #%patch3 -p1 # patched Makefile.org no longer exists
275 #%patch4 -p1 # patched Makefile.org no longer exists
277 #%patch6 -p1 # patched Makefile.org no longer exists
284 sed -i -e 's|\$prefix/\$libdir/engines|/%{_lib}/engines|g' Configure
289 # util/perlpath.pl no longer exists
290 #%{__perl} util/perlpath.pl %{__perl}
292 OPTFLAGS="%{rpmcflags} %{rpmcppflags} %{?with_purify:-DPURIFY}" \
294 %{__perl} ./Configure \
295 --openssldir=%{_sysconfdir}/%{name} \
299 %{?with_sslv2:enable-ssl2}%{!?with_sslv2:no-ssl2} \
300 %{?with_sslv3:enable-ssl3}%{!?with_sslv3:no-ssl3} \
301 %{!?with_zlib:no-}zlib \
312 enable-ec_nistp_64_gcc_128 \
317 # ^- allow running on 80386 (default code uses bswapl available on i486+)
349 %ifarch armv4 armv5 armv5t armv5te armv5tel
353 v=$(awk -F= '/^VERSION/{print $2}' Makefile)
354 test "$v" = %{version}%{?with_snap:-dev}
356 %{__make} -j1 all rehash %{?with_tests:tests} \
358 ASFLAG='$(CFLAG) -Wa,--noexecstack' \
359 INSTALLTOP=%{_prefix}
361 # Rename POD sources of man pages. "openssl_" prefix is added to each
362 # manpage to avoid potential conflicts with other packages.
364 for dir in doc/{apps,ssl,crypto}; do
366 %{__perl} -pi -e 's/(\W)((?<!openssl_)\w+)(\(\d\))/$1openssl_$2$3/g; s/openssl_openssl/openssl/g;' *.pod;
368 for pod in !(openssl*).pod; do
369 mv -f $pod openssl_$pod;
375 rm -rf $RPM_BUILD_ROOT
376 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/%{name},%{_libdir}/%{name}} \
377 $RPM_BUILD_ROOT{%{_mandir}/{pl/man1,man{1,3,5,7}},%{_datadir}/ssl} \
378 $RPM_BUILD_ROOT/%{_lib}/engines \
379 $RPM_BUILD_ROOT%{_pkgconfigdir}
381 %{__make} -j1 install \
382 INSTALLTOP=%{_prefix} \
383 INSTALL_PREFIX=$RPM_BUILD_ROOT \
386 mv -f $RPM_BUILD_ROOT%{_libdir}/engines/* $RPM_BUILD_ROOT/%{_lib}/engines
387 mv -f $RPM_BUILD_ROOT%{_libdir}/lib*.so.*.* $RPM_BUILD_ROOT/%{_lib}
388 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libcrypto.*.*) $RPM_BUILD_ROOT%{_libdir}/libcrypto.so
389 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libssl.*.*) $RPM_BUILD_ROOT%{_libdir}/libssl.so
391 mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc/* $RPM_BUILD_ROOT%{_libdir}/%{name}
392 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc
394 # not installed as individual utilities (see openssl dgst instead)
395 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{dss1,md2,md4,md5,mdc2,ripemd160,sha,sha1,sha224,sha256,sha384,sha512}.1
397 cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/pl/man1/openssl.1
398 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/ssl-certificate
399 install -p %{SOURCE4} $RPM_BUILD_ROOT%{_bindir}/c_rehash.sh
402 rm -rf $RPM_BUILD_ROOT
404 %post -p /sbin/ldconfig
405 %postun -p /sbin/ldconfig
407 %triggerpostun -- %{name}-tools < 1.0.0-5
408 # the hashing format has changed in 1.0.0
409 [ ! -x %{_sbindir}/update-ca-certificates ] || %{_sbindir}/update-ca-certificates --fresh || :
411 %triggerpostun -- %{name} < 0.9.8i-2
412 # don't do anything on --downgrade
413 if [ $1 -le 1 ]; then
416 if [ -d /var/lib/openssl/certs ] ; then
417 mv /var/lib/openssl/certs/* %{_sysconfdir}/%{name}/certs 2>/dev/null || :
419 if [ -d /var/lib/openssl/private ] ; then
420 mv /var/lib/openssl/private/* %{_sysconfdir}/%{name}/private 2>/dev/null || :
422 if [ -d /var/lib/openssl ] ; then
423 for f in /var/lib/openssl/* ; do
424 [ -f "$f" ] && mv "$f" %{_sysconfdir}/%{name} 2>/dev/null || :
426 rmdir /var/lib/openssl/* 2>/dev/null || :
427 rmdir /var/lib/openssl 2>/dev/null || :
431 %defattr(644,root,root,755)
432 %doc CHANGES CHANGES.SSLeay LICENSE NEWS README doc/*.txt
433 %attr(755,root,root) /%{_lib}/libcrypto.so.*.*.*
434 %attr(755,root,root) /%{_lib}/libssl.so.*.*.*
435 %dir %{_sysconfdir}/%{name}
436 %dir %{_sysconfdir}/%{name}/certs
437 %dir %attr(700,root,root) %{_sysconfdir}/%{name}/private
441 %defattr(644,root,root,755)
442 %dir /%{_lib}/engines
443 %attr(755,root,root) /%{_lib}/engines/*.so
446 %defattr(644,root,root,755)
447 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/openssl.cnf
448 %attr(755,root,root) %{_bindir}/c_rehash.sh
449 %attr(755,root,root) %{_bindir}/openssl
450 %attr(754,root,root) %{_bindir}/ssl-certificate
452 %dir %{_libdir}/%{name}
453 %attr(755,root,root) %{_libdir}/%{name}/CA.sh
454 %attr(755,root,root) %{_libdir}/%{name}/c_hash
455 %attr(755,root,root) %{_libdir}/%{name}/c_info
456 %attr(755,root,root) %{_libdir}/%{name}/c_issuer
457 %attr(755,root,root) %{_libdir}/%{name}/c_name
459 %{_mandir}/man1/openssl.1*
460 %{_mandir}/man1/openssl_asn1parse.1*
461 %{_mandir}/man1/openssl_ca.1*
462 %{_mandir}/man1/openssl_ciphers.1*
463 %{_mandir}/man1/openssl_cms.1*
464 %{_mandir}/man1/openssl_crl.1*
465 %{_mandir}/man1/openssl_crl2pkcs7.1*
466 %{_mandir}/man1/openssl_dgst.1*
467 %{_mandir}/man1/openssl_dhparam.1*
468 %{_mandir}/man1/openssl_dsa.1*
469 %{_mandir}/man1/openssl_dsaparam.1*
470 %{_mandir}/man1/openssl_ec.1*
471 %{_mandir}/man1/openssl_ecparam.1*
472 %{_mandir}/man1/openssl_enc.1*
473 %{_mandir}/man1/openssl_errstr.1*
474 %{_mandir}/man1/openssl_gendsa.1*
475 %{_mandir}/man1/openssl_genpkey.1*
476 %{_mandir}/man1/openssl_genrsa.1*
477 %{_mandir}/man1/openssl_nseq.1*
478 %{_mandir}/man1/openssl_ocsp.1*
479 %{_mandir}/man1/openssl_passwd.1*
480 %{_mandir}/man1/openssl_pkcs12.1*
481 %{_mandir}/man1/openssl_pkcs7.1*
482 %{_mandir}/man1/openssl_pkcs8.1*
483 %{_mandir}/man1/openssl_pkey.1*
484 %{_mandir}/man1/openssl_pkeyparam.1*
485 %{_mandir}/man1/openssl_pkeyutl.1*
486 %{_mandir}/man1/openssl_rand.1*
487 %{_mandir}/man1/openssl_req.1*
488 %{_mandir}/man1/openssl_rsa.1*
489 %{_mandir}/man1/openssl_rsautl.1*
490 %{_mandir}/man1/openssl_s_client.1*
491 %{_mandir}/man1/openssl_s_server.1*
492 %{_mandir}/man1/openssl_s_time.1*
493 %{_mandir}/man1/openssl_sess_id.1*
494 %{_mandir}/man1/openssl_smime.1*
495 %{_mandir}/man1/openssl_speed.1*
496 %{_mandir}/man1/openssl_spkac.1*
497 %{_mandir}/man1/openssl_ts.1*
498 %{_mandir}/man1/openssl_tsget.1*
499 %{_mandir}/man1/openssl_verify.1*
500 %{_mandir}/man1/openssl_version.1*
501 %{_mandir}/man1/openssl_x509.1*
502 %{_mandir}/man5/openssl_config.5*
503 %{_mandir}/man5/openssl_x509v3_config.5*
504 %lang(pl) %{_mandir}/pl/man1/openssl.1*
507 %defattr(644,root,root,755)
508 %attr(755,root,root) %{_bindir}/c_rehash
509 %attr(755,root,root) %{_libdir}/%{name}/CA.pl
510 %attr(755,root,root) %{_libdir}/%{name}/tsget
511 %{_mandir}/man1/openssl_CA.pl.1*
512 %{_mandir}/man1/openssl_c_rehash.1*
515 %defattr(644,root,root,755)
516 %attr(755,root,root) %{_libdir}/libcrypto.so
517 %attr(755,root,root) %{_libdir}/libssl.so
518 %{_includedir}/%{name}
519 %{_pkgconfigdir}/libcrypto.pc
520 %{_pkgconfigdir}/libssl.pc
521 %{_pkgconfigdir}/openssl.pc
522 %{_mandir}/man3/openssl*.3*
523 %{_mandir}/man7/openssl_des_modes.7*
526 %defattr(644,root,root,755)
527 %{_libdir}/libcrypto.a