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 Patch11: engines-dir.patch
54 URL: http://www.openssl.org/
56 BuildRequires: perl-devel >= 1:5.10.0
57 BuildRequires: rpm-perlprov >= 4.1-13
58 BuildRequires: rpmbuild(macros) >= 1.213
59 BuildRequires: sed >= 4.0
60 BuildRequires: zlib-devel
61 Requires: ca-certificates >= 20120623-1.1
62 Requires: rpm-whiteout >= 1.7
64 Obsoletes: SSLeay-devel
65 Obsoletes: SSLeay-perl
66 Obsoletes: libopenssl0
67 %if "%{pld_release}" == "ac"
68 Conflicts: neon < 0.26.3-3
69 Conflicts: ntpd < 4.2.4p8-10
70 Conflicts: openssh-clients < 2:5.8p1-9
71 Conflicts: openssh-server < 2:5.8p1-9
73 Conflicts: neon < 0.29.6-8
74 Conflicts: openssh-clients < 2:6.2p2-3
75 Conflicts: openssh-server < 2:6.2p2-3
77 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
80 The OpenSSL Project is a collaborative effort to develop a robust,
81 commercial-grade, full-featured, and Open Source toolkit implementing
82 the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS
83 v1) protocols with full-strength cryptography world-wide. The project
84 is managed by a worldwide community of volunteers that use the
85 Internet to communicate, plan, and develop the OpenSSL tookit and its
86 related documentation.
88 OpenSSL is based on the excellent SSLeay library developed by Eric A.
89 Young and Tim J. Hudson. The OpenSSL toolkit is licensed under an
90 Apache-style licence, which basically means that you are free to get
91 and use it for commercial and non-commercial purposes subject to some
92 simple license conditions.
94 This package contains shared libraries only, install openssl-tools if
95 you want to use openssl cmdline tool.
97 %description -l de.UTF-8
98 Openssl enthält das OpenSSL Zertifikatsmanagementtool und shared
99 libraries, die verschiedene Verschlüsselungs- und
100 Entschlüsselungsalgorithmen und -protokolle, wie DES, RC4, RSA und SSL
101 zur Verfügung stellen.
103 %description -l es.UTF-8
104 Biblioteca C que suministra algoritmos y protocolos criptográficos.
106 %description -l fr.UTF-8
107 OpenSSL est un outiil de gestion des certificats et les librairies
108 partagees qui fournit plusieurs protocoles et algorithmes de
109 codage/decodage, incluant DES, RC4, RSA et SSL.
111 %description -l pl.UTF-8
112 Implementacja protokołów kryptograficznych Secure Socket Layer (SSL)
113 v2/v3 oraz Transport Layer Security (TLS v1).
115 %description -l pt_BR.UTF-8
116 Uma biblioteca C que fornece vários algoritmos e protocolos
117 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas
118 compartilhadas e utilitários.
120 %description -l ru.UTF-8
121 Программа openssl для работы с сертификатами и разделяемые библиотеки,
122 которые реализуют множетсво криптографических алгоритмов, включая DES,
125 %description -l uk.UTF-8
126 Програма openssl для роботи з сертифікатами та бібліотеки спільного
127 користування, що реалізують велику кількість криптографічних
128 алгоритмів, включаючи DES, RC4, RSA та SSL.
131 Summary: OpenSSL optional crypto engines
132 Summary(pl.UTF-8): Opcjonalne silniki kryptograficzne dla OpenSSL-a
134 Requires: %{name} = %{version}-%{release}
137 With OpenSSL 0.9.6, a new component was added to support alternative
138 cryptography implementations, most commonly for interfacing with
139 external crypto devices (eg. accelerator cards). This component is
142 There are currently built-in ENGINE implementations for the following
151 In addition, dynamic binding to external ENGINE implementations is now
152 provided by a special ENGINE called "dynamic".
154 %description engines -l pl.UTF-8
155 Począwszy od OpenSSL-a 0.9.6 został dodany nowy komponent, mający
156 wspierać alternatywne implementacje kryptografii, przeważnie
157 współpracujące z zewnętrznymi urządzeniami kryptograficznymi (np.
158 kartami akceleratorów). Komponent ten jest nazywany SILNIKIEM (ang.
161 Obecnie istnieją wbudowane implementacje silników dla następujących
162 urządzeń kryptograficznych:
169 Ponadto zapewnione jest dynamiczne wiązanie dla zewnętrznych
170 implementacji silników poprzez specjalny silnik o nazwie "dynamic".
173 Summary: OpenSSL command line tool and utilities
174 Summary(pl.UTF-8): Zestaw narzędzi i skryptów
175 Group: Applications/Communications
176 Requires: %{name} = %{version}-%{release}
180 The OpenSSL Toolkit cmdline tool openssl and utility scripts.
182 %description tools -l pl.UTF-8
183 Zestaw narzędzi i skryptów wywoływanych z linii poleceń.
186 Summary: OpenSSL utilities written in Perl
187 Summary(pl.UTF-8): Narzędzia OpenSSL napisane w perlu
188 Group: Applications/Communications
189 Requires: %{name} = %{version}-%{release}
191 %description tools-perl
192 OpenSSL Toolkit tools written in Perl.
194 %description tools-perl -l pl.UTF-8
195 Narzędzia OpenSSL napisane w perlu.
198 Summary: Development part of OpenSSL Toolkit libraries
199 Summary(de.UTF-8): Secure Sockets Layer Kommunikationslibrary: statische libraries+header
200 Summary(es.UTF-8): Bibliotecas y archivos de inclusión para desarrollo OpenSSL
201 Summary(fr.UTF-8): Librairies statiques, headers et utilitaires pour communication SSL
202 Summary(pl.UTF-8): Część bibiloteki OpenSSL przeznaczona dla programistów
203 Summary(pt_BR.UTF-8): Bibliotecas e arquivos de inclusão para desenvolvimento OpenSSL
204 Summary(ru.UTF-8): Библиотеки, хедеры и утилиты для Secure Sockets Layer
205 Summary(uk.UTF-8): Бібліотеки, хедери та утиліти для Secure Sockets Layer
206 Group: Development/Libraries
207 Requires: %{name} = %{version}-%{release}
208 Obsoletes: libopenssl0-devel
211 Development part of OpenSSL library.
213 %description devel -l es.UTF-8
214 Bibliotecas y archivos de inclusión para desarrollo OpenSSL
216 %description devel -l pl.UTF-8
217 Część biblioteki OpenSSL przeznaczona dla programistów.
219 %description devel -l pt_BR.UTF-8
220 Uma biblioteca C que fornece vários algoritmos e protocolos
221 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas e
222 arquivos de inclusão para desenvolvimento.
224 %description devel -l ru.UTF-8
225 Программа openssl для работы с сертификатами и разделяемые библиотеки,
226 которые реализуют множетсво криптографических алгоритмов, включая DES,
227 RC4, RSA и SSL. Включает библиотеки и хедеры для разработки приложений
228 с использованием SSL.
230 %description devel -l uk.UTF-8
231 Програма openssl для роботи з сертифікатами та бібліотеки спільного
232 користування, що реалізують велику кількість криптографічних
233 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить бібліотеки та
234 хедери для розробки програм з використанням SSL.
237 Summary: Static OpenSSL libraries
238 Summary(pl.UTF-8): Statyczne wersje bibliotek z OpenSSL
239 Summary(pt_BR.UTF-8): Bibliotecas estáticas para desenvolvimento com openssl
240 Summary(ru.UTF-8): Статические библиотеки разработчика для OpenSSL
241 Summary(uk.UTF-8): Статичні бібліотеки програміста для OpenSSL
242 Group: Development/Libraries
243 Requires: %{name}-devel = %{version}-%{release}
246 Static OpenSSL Toolkit libraries.
248 %description static -l pl.UTF-8
249 Statyczne wersje bibliotek z OpenSSL.
251 %description static -l pt_BR.UTF-8
252 Bibliotecas estáticas para desenvolvimento com openssl.
254 %description static -l ru.UTF-8
255 Программа openssl для работы с сертификатами и разделяемые библиотеки,
256 которые реализуют множетсво криптографических алгоритмов, включая DES,
257 RC4, RSA и SSL. Включает статические библиотеки для разработки
258 приложений с использованием OpenSSL.
260 %description static -l uk.UTF-8
261 Програма openssl для роботи з сертифікатами та бібліотеки спільного
262 користування, що реалізують велику кількість криптографічних
263 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить статичні
264 бібліотеки для розробки програм з використанням SSL.
269 mv %{name}-OpenSSL_1_0_2-stable/* .
271 %setup -q %{?subver:-n %{name}-%{version}-%{subver}}
273 #%patch0 -p1 # alpha patch from year 2000 - drop it
274 #%patch1 -p1 # flags list has been nuked (thank god!)
275 #%patch2 -p1 # openssl include subdir. check this
276 #%patch3 -p1 # patched Makefile.org no longer exists
277 #%patch4 -p1 # patched Makefile.org no longer exists
279 #%patch6 -p1 # patched Makefile.org no longer exists
290 # util/perlpath.pl no longer exists
291 #%{__perl} util/perlpath.pl %{__perl}
293 OPTFLAGS="%{rpmcflags} %{rpmcppflags} %{?with_purify:-DPURIFY}" \
295 %{__perl} ./Configure \
296 --prefix=%{_prefix} \
297 --openssldir=%{_sysconfdir}/%{name} \
301 %{?with_sslv2:enable-ssl2}%{!?with_sslv2:no-ssl2} \
302 %{?with_sslv3:enable-ssl3}%{!?with_sslv3:no-ssl3} \
303 %{!?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}%{?subver:-%{subver}}%{?with_snap:-dev}
356 %{__make} -j1 all %{?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%{_pkgconfigdir}
380 %{__make} -j1 install \
382 ASFLAG='$(CFLAG) -Wa,--noexecstack' \
383 DESTDIR=$RPM_BUILD_ROOT \
385 mv -f $RPM_BUILD_ROOT%{_libdir}/lib*.so.*.* $RPM_BUILD_ROOT/%{_lib}
386 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libcrypto.*.*) $RPM_BUILD_ROOT%{_libdir}/libcrypto.so
387 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libssl.*.*) $RPM_BUILD_ROOT%{_libdir}/libssl.so
389 mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc/* $RPM_BUILD_ROOT%{_libdir}/%{name}
390 rm -r $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc
392 # html version of man pages - not packaged
393 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/%{name}/html/man[1357]
395 # not installed as individual utilities (see openssl dgst instead)
396 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{md4,md5,mdc2,ripemd160,sha,sha1,sha224,sha256,sha384,sha512}.1
398 cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/pl/man1/openssl.1
399 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/ssl-certificate
400 install -p %{SOURCE4} $RPM_BUILD_ROOT%{_bindir}/c_rehash.sh
403 rm -rf $RPM_BUILD_ROOT
405 %post -p /sbin/ldconfig
406 %postun -p /sbin/ldconfig
408 %triggerpostun -- %{name}-tools < 1.0.0-5
409 # the hashing format has changed in 1.0.0
410 [ ! -x %{_sbindir}/update-ca-certificates ] || %{_sbindir}/update-ca-certificates --fresh || :
412 %triggerpostun -- %{name} < 0.9.8i-2
413 # don't do anything on --downgrade
414 if [ $1 -le 1 ]; then
417 if [ -d /var/lib/openssl/certs ] ; then
418 mv /var/lib/openssl/certs/* %{_sysconfdir}/%{name}/certs 2>/dev/null || :
420 if [ -d /var/lib/openssl/private ] ; then
421 mv /var/lib/openssl/private/* %{_sysconfdir}/%{name}/private 2>/dev/null || :
423 if [ -d /var/lib/openssl ] ; then
424 for f in /var/lib/openssl/* ; do
425 [ -f "$f" ] && mv "$f" %{_sysconfdir}/%{name} 2>/dev/null || :
427 rmdir /var/lib/openssl/* 2>/dev/null || :
428 rmdir /var/lib/openssl 2>/dev/null || :
432 %defattr(644,root,root,755)
433 %doc CHANGES LICENSE NEWS README doc/*.txt
434 %attr(755,root,root) /%{_lib}/libcrypto.so.*.*
435 %attr(755,root,root) /%{_lib}/libssl.so.*.*
436 %dir %{_sysconfdir}/%{name}
437 %dir %{_sysconfdir}/%{name}/certs
438 %dir %attr(700,root,root) %{_sysconfdir}/%{name}/private
442 %defattr(644,root,root,755)
443 %dir /%{_lib}/engines-1.1
444 %attr(755,root,root) /%{_lib}/engines-1.1/*.so
447 %defattr(644,root,root,755)
448 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/openssl.cnf
449 %attr(755,root,root) %{_bindir}/c_rehash.sh
450 %attr(755,root,root) %{_bindir}/openssl
451 %attr(754,root,root) %{_bindir}/ssl-certificate
453 %dir %{_libdir}/%{name}
454 #%attr(755,root,root) %{_libdir}/%{name}/CA.sh
455 #%attr(755,root,root) %{_libdir}/%{name}/c_hash
456 #%attr(755,root,root) %{_libdir}/%{name}/c_info
457 #%attr(755,root,root) %{_libdir}/%{name}/c_issuer
458 #%attr(755,root,root) %{_libdir}/%{name}/c_name
460 %{_mandir}/man1/openssl.1*
461 %{_mandir}/man1/openssl_asn1parse.1*
462 %{_mandir}/man1/openssl_ca.1*
463 %{_mandir}/man1/openssl_ciphers.1*
464 %{_mandir}/man1/openssl_cms.1*
465 %{_mandir}/man1/openssl_crl.1*
466 %{_mandir}/man1/openssl_crl2pkcs7.1*
467 %{_mandir}/man1/openssl_dgst.1*
468 %{_mandir}/man1/openssl_dhparam.1*
469 %{_mandir}/man1/openssl_dsa.1*
470 %{_mandir}/man1/openssl_dsaparam.1*
471 %{_mandir}/man1/openssl_ec.1*
472 %{_mandir}/man1/openssl_ecparam.1*
473 %{_mandir}/man1/openssl_enc.1*
474 %{_mandir}/man1/openssl_errstr.1*
475 %{_mandir}/man1/openssl_gendsa.1*
476 %{_mandir}/man1/openssl_genpkey.1*
477 %{_mandir}/man1/openssl_genrsa.1*
478 %{_mandir}/man1/openssl_nseq.1*
479 %{_mandir}/man1/openssl_ocsp.1*
480 %{_mandir}/man1/openssl_passwd.1*
481 %{_mandir}/man1/openssl_pkcs12.1*
482 %{_mandir}/man1/openssl_pkcs7.1*
483 %{_mandir}/man1/openssl_pkcs8.1*
484 %{_mandir}/man1/openssl_pkey.1*
485 %{_mandir}/man1/openssl_pkeyparam.1*
486 %{_mandir}/man1/openssl_pkeyutl.1*
487 %{_mandir}/man1/openssl_rand.1*
488 %{_mandir}/man1/openssl_req.1*
489 %{_mandir}/man1/openssl_rsa.1*
490 %{_mandir}/man1/openssl_rsautl.1*
491 %{_mandir}/man1/openssl_s_client.1*
492 %{_mandir}/man1/openssl_s_server.1*
493 %{_mandir}/man1/openssl_s_time.1*
494 %{_mandir}/man1/openssl_sess_id.1*
495 %{_mandir}/man1/openssl_smime.1*
496 %{_mandir}/man1/openssl_speed.1*
497 %{_mandir}/man1/openssl_spkac.1*
498 %{_mandir}/man1/openssl_ts.1*
499 %{_mandir}/man1/openssl_tsget.1*
500 %{_mandir}/man1/openssl_verify.1*
501 %{_mandir}/man1/openssl_version.1*
502 %{_mandir}/man1/openssl_x509.1*
503 %{_mandir}/man5/openssl_config.5*
504 %{_mandir}/man5/openssl_x509v3_config.5*
505 %lang(pl) %{_mandir}/pl/man1/openssl.1*
508 %defattr(644,root,root,755)
509 %attr(755,root,root) %{_bindir}/c_rehash
510 %attr(755,root,root) %{_libdir}/%{name}/CA.pl
511 %attr(755,root,root) %{_libdir}/%{name}/tsget
512 %{_mandir}/man1/openssl_CA.pl.1*
513 #%{_mandir}/man1/openssl_c_rehash.1*
516 %defattr(644,root,root,755)
517 %attr(755,root,root) %{_libdir}/libcrypto.so
518 %attr(755,root,root) %{_libdir}/libssl.so
519 %{_includedir}/%{name}
520 %{_pkgconfigdir}/libcrypto.pc
521 %{_pkgconfigdir}/libssl.pc
522 %{_pkgconfigdir}/openssl.pc
527 %{_mandir}/man3/openssl*.3*
528 %{_mandir}/man7/openssl_des_modes.7*
532 %defattr(644,root,root,755)
533 %{_libdir}/libcrypto.a