Install CentOS8 + NGINX + PHP-FPM + MariaDB + Google PageSpeed + Let’s Encrypt

This tutorial will help you to configure a web server with CentOS8, NGINX, PHP-FPM, MariaDB, Google PageSpeed and Let’s Encrypt.

The installation will be done with the latest stable versions available at this moment. The packages are from official repositories if developers have them. All commands are executed as root. If you use a user without root rights, add sudo in front of each command.

The most recent stable versions at the moment of writing/updating the article:

CentOS 8.0
Nginx 1.16.0 stable
PHP 7.3.10
MariaDB 10.4.8
Google PageSpeed Module 1.16.0
Certbot 0.39.0 (for Let's Encrypt) 

Follow step by step the below instructions and you’ll get a functional server with above software specifications.

After the initial install of CentOS, check if exists updates for the operating system.

# dnf update -y

First of all secure the server (with firewall). Also, you need to allow the access for HTTP and HTTPS protocols.

# dnf install -y firewalld
# systemctl start firewalld
# systemctl enable firewalld
# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

Install several required packages for server configuration and the
EPEL repository.

# dnf install -y vim wget dnf-utils epel-release

Micro tutorial for vim

A file opens with the command

# vim <fişier>

To write a test in a file, activate the insertion mode pressing the “i” or “INSERT” key and then you can write.
To add text from the clipboard, after entering the insertion mode, press SHIFT + INSERT or right click.
To save and close the file, first exit the insertion mode by pressing the “ESC” key, then type the text below and press ENTER

:x

Install Nginx

To add the official Nginx repository, create file Nginx.repo in /etc/yum.repos.d

# vim /etc/yum.repos.d/nginx.repo

Add the below code in the file and save it

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Install Nginx, start the service and activate it to automatically start at reboot

# dnf install -y nginx
# systemctl start nginx
# systemctl enable nginx

Check the installation by opening the browser and access the server address.

Install MariaDB

If you install MariaDB from the CentOS repository, it will install version 10.3 (at this moment). MariaDB has an official repository, so add it and install version 10.4.

# vim /etc/yum.repos.d/MariaDB.repo

Add the below code in the opened file and save it

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos8-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Install MariaDB, start the service and activate it to automatically start at reboot

# dnf install -y boost-program-options
# dnf --disablerepo=AppStream install -y MariaDB-server MariaDB-client
# systemctl start mariadb
# systemctl enable mariadb

Execute the script to secure MySQL/MariaDB and set a password for root

# mysql_secure_installation

Install PHP

PHP doesn’t have an official repository, so we use an external one that contains the required packages. We will use REMI.

# dnf install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm

By default, REMI has deactivated all repositories. To install PHP from REMI, you must activate the desired version. In this case, latest stable version is PHP 7.3

# dnf -y module enable php:remi-7.3

Now you can install PHP-FPM.

# dnf install -y php-fpm php-mysqlnd php-common php-json php-pdo php-cli

Depending on the application/site needs, you must install the necessary and specific packages.

Note: php (simple) package wasn’t installed because we don’t need it. That package is required only when you use PHP with Apache.

Configure PHP-FPM

A recommendation for a (small) security enhancement is to edit php.ini

# vim /etc/php.ini

and set

cgi.fix_pathinfo=0

We keep the reason and make another change. By default, PHP shows the version of the header received by the browser. To remove the version, in the same file, look for and set

expose_php = Off

Edit www.conf

# vim /etc/php-fpm.d/www.conf

Using nginx, the following parameters need to be changed: user and group

user = nginx
group = nginx

Change the listen parameter and set it as below

listen = /run/php-fpm/php-fpm.sock

Uncomment listen.owner and listen.group parameters and set the right

listen.owner = nginx
listen.group = nginx

Start PHP-FPM and activate it to automatically start at reboot

# systemctl start php-fpm
# systemctl enable php-fpm

Note: At this moment, Nginx is not configured to serve PHP pages. We’ll set it up later.

Install Google PageSpeed as a dynamic module

Google offers an official repository only for Apache. For Nginx, we will add a repository from getpagespeed.com.

Warn: The installation of Google PageSpeed from the below repository only works if you have installed Nginx from the official repository and not from the CentOS repository.

# dnf install -y https://extras.getpagespeed.com/release-el8-latest.rpm

Install Google PageSpeed

# dnf install -y nginx-module-pagespeed

Note: At this moment, Nginx is not configured to use the PageSpeed module. We’ll set it up later.

Install Let’s Encrypt

It’s inappropriate to say Let’s Encrypt installation because it just emits the SSL/TLS certificates. Because the validity of certificates is only 90 days, it would be preferable for these certificates to be renewed automatically. For this, we will install CertBot

# wget https://dl.eff.org/certbot-auto
# mv certbot-auto /usr/local/bin/certbot-auto
# chown root /usr/local/bin/certbot-auto
# chmod 0755 /usr/local/bin/certbot-auto

Configure Nginx

Nginx creates a default configuration file for a domain. It needs it to be changed.

# vim /etc/nginx/conf.d/default.conf

Below are the changes, but at the end you have an example of a configuration file with all of them (for the casastii.nanlucian.com subdomain example), keeping the default Nginx comments and adding others for the new sections but removing the commented and unused directives. Changes are:

  • set server_name with your (sub)domain
  • in location / { } section, you find root and index directives. Move them up a “level”, in server { }
  • add index.php in index (preferably would be the first)
  • in location / { } section add try_files $uri $uri/ =404;
  • uncommet error_page   404 /404.html;
  • uncommet location ~ \.php$ { } section and add there the line: try_files $uri $uri/ =404;

Example with all the changes made (what is red is different as the default setting, but most of them must be changed as needed):

server {
    listen 80;
    server_name casastii.nanlucian.com;

    #following 2 lines are moved from: location / { }
    root /var/www/html; #must be configured the right path
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html; # uncommented line

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on /run/php-fpm/php-fpm.sock
    # the following section was uncommented
    location ~ \.php$ {
        try_files $uri $uri/ =404;
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny all;
    }
}

I recommend to change the file name from default.conf in <domain>.conf.

You previously installed the PageSpeed Google module. Follows the activation in /etc/nginx/nginx.conf

# vim /etc/nginx/nginx.conf

Before to start any section (e.g.: events { } ), load the pagespeed module adding the following line

load_module "modules/ngx_pagespeed.so";

In http { } section, add

pagespeed FileCachePath /var/ngx_pagespeed_cache;
pagespeed on;

After saving and closing the file, create the cache directory and set the nginx owner

# mkdir /var/ngx_pagespeed_cache
# chown nginx:nginx /var/ngx_pagespeed_cache

By default, PageSpeed shows the version in the browser header. I recommend hiding it for security reasons. The fewer particularities you show from your server configuration, the better. In addition to the module’s usage settings, before the pagespeed on; line, add the setting:

pagespeed XHeaderValue "Custom message instead version";

By default, Nginx shows the version in the browser header. For security reasons, it is preferable to disable version viewing. You can do it in /etc/nginx/nginx.conf file. In http { } section, add

server_tokens off;

Do not forget that after completing the changes in Nginx, check the syntax of the configuration files and (if there is no error) restart the service.

# nginx -t
# systemctl restart nginx

Generating the SSL/TLS certificate

Having domain/domains configured in Nginx, you can generate the SSL/TLS certificates. When generating with the command below, Certbot will offer you the option to automatically change the Nginx configuration files and set the HTTP to HTTPS redirection and the use of certificates. If you want to make these changes manually, add to the end of the command: certonly

# /usr/local/bin/certbot-auto --nginx

And as I said above, it would be preferable for these certificates to be automatically renewed. For this edit the cron

# crontab -e

and add a line similar to the one below (Certbot recommends 2 times/day). At the line below, I recommend you to change the written hours.

0 3,15 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew

To create a virtual machine (VM), many hosting services offer the option to use cloud-init for a faster initial configuration. I created a file that you can use it as a template for the cloud-config section. You have to do some changes, mentioned in the file itself.
Notă: last time when cloud-init file was updated is on configuration: CentOS 7.6, Nginx 1.14.2, PHP 7.3.1, MariaDB 10.3.12, Google PageSpeed Module 1.13.35, Certbot 0.29.1 (for Let’s Encrypt).

webserver.cloud-init

Instalare CentOS8 + NGINX + PHP-FPM + MariaDB + Google PageSpeed + Let’s Encrypt

Acest tutorial te ajută să îţi configurezi un server web cu CentOS8, NGINX, PHP-FPM, MariaDB, Google PageSpeed şi Let’s Encrypt.

Instalarea va fi făcută cu ultimele versiuni stabile disponibile la momentul de faţă. Pachetele sunt din repository-uri oficiale, acolo unde dezvoltatorii au asa ceva. Toate comenzile sunt executate ca root. În cazul în care foloseşti un utiliazator fără drepruri, adaugă sudo în faţa fiecărei comenzi.

Cele mai recente versiuni stabile la momentul scrierii/actualizării acestui articol:

CentOS 8.0
Nginx 1.16.0 stable
PHP 7.3.10
MariaDB 10.4.8
Modul Google PageSpeed 1.16.0
Certbot 0.39.0 (pentru Let's Encrypt)

Urmează pas cu pas instrucţiunile de mai jos şi vei obţine un server funcţional cu specificaţiile software de mai sus.

După instalarea inițială a CentOS, verifică dacă există actualizări ale sistemului de operare

# dnf update -y

Întâi securizează serverul (cu firewall) ca să nu ai surprize. De asemenea va fi nevoie să permiți accesul la protocoalele HTTP și HTTPS.

# dnf install -y firewalld
# systemctl start firewalld
# systemctl enable firewalld
# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

Instalează câteva pachete necesare pentru configurarea serverului şi repository-ul EPEL

# dnf install -y vim wget dnf-utils epel-release

Microtutorial pentru vim

Fişierul se deschide cu comanda

# vim <fişier>

Ca să scrii text în fişier, intră în modul de inserare apăsând “i” sau “INSERT” şi apoi poţi scrie.
Ca să adaugi un text din clipboard, după ce intri în modul de inserare, apasă SHIFT+INSERT sau click dreapta.
Pentru a salva şi închide fişierul, întâi ieşi din modul de inserare apăsând tasta “ESC”, apoi scrie textul de mai jos şi apasă ENTER

:x

Instalare Nginx

Pentru a adăuga repository-ul oficial Nginx, crează fişierul Nginx.repo în /etc/yum.repos.d

# vim /etc/yum.repos.d/nginx.repo

Adaugă codul de mai jos în fişier şi se salvează-l

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Instalează Nginx, porneşte serviciul şi activează-l să pornească automat la reboot

# dnf install -y nginx
# systemctl start nginx
# systemctl enable nginx

Verifică instalarea apelând serverul prin browser.

Instalare MariaDB

Dacă instalezi MariaDB din repository-ul CentOS, ar instala versiunea 10.3 (la momentul actual). MariaDB are repository oficial, aşa că îl adăugăm şi vom folosi versiunea 10.4.

# vim /etc/yum.repos.d/MariaDB.repo

Adaugă codul de mai jos în fişierul deschis şi se salvează-l

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos8-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Instalează MariaDB, porneşte serviciul şi activează-l să pornească automat la reboot

# dnf install -y boost-program-options
# dnf --disablerepo=AppStream install -y MariaDB-server MariaDB-client
# systemctl start mariadb
# systemctl enable mariadb

Rulează scriptul de securizare pentru MySQL/MariaDB şi setează o parola pentru root

# mysql_secure_installation

Instalare PHP

PHP-ul nu are un repository oficial, aşa că apelăm la unul extern care conţine pachetele necesare. Vom folosi REMI.

# dnf install -y http://rpms.remirepo.net/enterprise/remi-release-8.rpm

În acest moment, sunt disponibile mai multe versiuni de PHP disponibile. Ca să poţi instala PHP din REMI, trebuie să activezi versiunea dorită. În cazul de faţă, ultima versiune stabilă este PHP 7.3

# dnf -y module enable php:remi-7.3

Acum poţi instala PHP-FPM.

# dnf install -y php-fpm php-mysqlnd php-common php-json php-pdo php-cli

În funcţie de necesitățile aplicației/site-ului, trebuie să instalezi pachetele necesare și specifice acestuia.

Nota: pachetul php (simplu) nu a fost instalat şi nici nu este nevoie să fie instalat. Acel pachet este necesar doar când foloseşti PHP împreună cu Apache.

Configurare PHP-FPM

O recomandare pentru o (mică) îmbunătăţire a securităţii este să editezi php.ini

# vim /etc/php.ini

şi să setezi

cgi.fix_pathinfo=0

Păstrăm motivul şi mai facem încă o schimbare. Implicit, PHP afişează versiunea în header-ul primit de browser. Pentru a elimina versiunea, în același fișier, caută şi setează

expose_php = Off

Editează www.conf

# vim /etc/php-fpm.d/www.conf

Folosind nginx, trebuie schimbaţi parametrii user şi group

user = nginx
group = nginx

Schimbă parametrul listen şi setează-l ca mai jos

listen = /run/php-fpm/php-fpm.sock

Decomentează parametrii listen.owner şi listen.group şi stetează-i corect

listen.owner = nginx
listen.group = nginx

Porneşte PHP-FPM şi activează-l să pornească automat

# systemctl start php-fpm
# systemctl enable php-fpm

Notă: În acest moment, Nginx nu este configurat să servească pagini PHP. Îl vom configura mai târziu.

Instalare Google PageSpeed ca modul dinamic

Google oferă un repository oficial doar pentru Apache. Pentru Nginx vom adăuga un repository de la getpagespeed.com.

Antenţie: instalarea Google PageSpeed din repository-ul de mai jos funcţionează doar dacă ai instalat Nginx din repository-ul oficial şi nu din repository-ul CentOS.

# dnf install -y https://extras.getpagespeed.com/release-el8-latest.rpm

Instalează Google PageSpeed

# dnf install -y nginx-module-pagespeed

Notă: În acest moment, Nginx nu este configurat să folosească modulul PageSpeed. Îl vom configura mai târziu.

Instalare Let’s Encrypt

Este impropriu spus instalare Let’s Encrypt, pentru că acesta doar emite certificatele SSL/TLS. Deoarece valabilitatea certificatelor este de doar 90 de zile, ar fi de preferat ca aceste certificate să se reînnoiască automat. Pentru aceasta vom instala CertBot

# wget https://dl.eff.org/certbot-auto
# mv certbot-auto /usr/local/bin/certbot-auto
# chown root /usr/local/bin/certbot-auto
# chmod 0755 /usr/local/bin/certbot-auto

Configurare Nginx

Nginx crează un fişier implicit de configurare pentru domeniu. Este nevoie să-l modificăm

# vim /etc/nginx/conf.d/default.conf

Mai jos sunt modificările, dar la final ai un exemplu de fişier cu toate acestea (pentru subdomeniul casastii.nanlucian.com ca exemplu), păstrând comentariile implicite Nginx şi adăugând altele pentru secţiunile noi, dar eliminând directivele comentate şi nefolosite. Schimbările sunt:

  • setează server_name cu (sub)domeniul tău
  • în secţiunea location / { } găseşti directivele root şi index. Mută-le un “nivel” mai sus, în server { }
  • adaugă index.php în index (de preferat ar fi primul)
  • în secţiunea location / { } adaugă try_files $uri $uri/ =404;
  • decomentează error_page   404 /404.html;
  • decomentează secţiuna location ~ \.php$ { } şi adaugă şi acolo linia try_files $uri $uri/ =404;

Exemplu cu modificările făcute (ce este cu roșu este modificat față de configurarea default, dar mare parte trebuie și modificate conform nevoilor):

server {
    listen 80;
    server_name casastii.nanlucian.com;

    #urmatoarele 2 linii sunt mutate din location / { }
    root /var/www/html; #trebuie configurată calea corectă
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html; # linie decomentata

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on /run/php-fpm/php-fpm.sock
    # sectiunea de mai jos era comentata
    location ~ \.php$ {
        try_files $uri $uri/ =404;
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny all;
    }
}

Recomand să schimbi numele fişierului din default.conf în <domeniu>.conf .

Mai devreme ai instalat modulul Google PageSpeed. Urmează activarea în /etc/nginx/nginx.conf

# vim /etc/nginx/nginx.conf

Înainte de a începe orice secţiune (ex: events { } ), încarcă modulul pagespeed adăugând linia

load_module "modules/ngx_pagespeed.so";

În secţiunea http { } adaugă

pagespeed FileCachePath /var/ngx_pagespeed_cache;
pagespeed on;

După salvarea şi închiderea fişierului, crează directorul pentru cache şi setează owner-ul nginx

# mkdir /var/ngx_pagespeed_cache
# chown nginx:nginx /var/ngx_pagespeed_cache

Implicit, PageSpeed afişează versiunea în header-ul primit de browser. Recomand ascunderea acesteia din motive de securitate. Cu cât oferi mai puţine particularități despre configurarea serverului tău, cu atât mai bine. Pe lângă setările de folosire a modulului, înainte de linia pagespeed on; , adaugă şi setarea:

pagespeed XHeaderValue "Un mesaj personalizat în locul versiunii";

Implicit, Nginx afişează versiunea în header-ul primit de browser. Din motive de securitate, este de preferat să dezactivezi afişarea versiunii. O poţi face tot în fişierul /etc/nginx/nginx.conf . În secţiunea http { } adaugă

server_tokens off;

Nu uita ca după ce finalizezi modificările în Nginx, să verifici sintaxa fişierelor de configurare şi (în caz că nu există nicio eroare) să dai restart la serviciu.

# nginx -t
# systemctl restart nginx

Generare certificat SSL/TLS

Având domeniul/domeniile configurate în Nginx, poţi genera certificatele SSL/TLS. La generarea cu comanda de mai jos, Certbot va oferi posibilitatea de a modifica fişierele de configurare Nginx, astfel încât să configureze automat redirecţionarea către HTTPS şi folosirea certificatelor. Dacă vrei să faci tu aceste modificări, manual, adaugă la final: certonly

# /usr/local/bin/certbot-auto --nginx

Şi cum spuneam mai sus, ar fi de preferat ca aceste certificate să se reînnoiască automat. Pentru asta editează cron-ul

# crontab -e

şi adaugă o linie similară cu cea de mai jos (Certbot recomandă de 2 ori/zi). La linia de mai jos, recomand să schimbaţi orele scrise.

0 3,15 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew

Pentru crearea unei mașini virtuale (VM), multe servicii de hosting oferă posibilitatea utilizării cloud-init pentru o configurare inițială mai rapidă. Am creat un fișier pe care-l poți folosi ca template pentru secțiunea cloud-config. Trebuie făcute câteva modificări, menționate chiar în fișier.
Notă: fișierul pentru cloud-init a fost actualizat ultima dată pe configurația: CentOS 7.6, Nginx 1.14.2, PHP 7.3.1, MariaDB 10.3.12, Modul Google PageSpeed 1.13.35, Certbot 0.29.1 (pentru Let’s Encrypt).

webserver.cloud-init

Informații stadiu cerere ONRC

Când depui o cerere la ONRC, la ghișeu, primești o hârtie, un “Bon REG”. Pe el sunt trecute date precum termenul de soluționare și termenul de eliberare. Tot acolo găsești un număr de intrare și faptul că poți vedea stadiul cererii pe http://portal.onrc.ro.

Meniu portal ONRC
Meniul din stânga

Am explorat acest portal și mi-a luat ceva timp să găsesc unde anume poți verifica stadiul cererii actuale.

În primul rând trebuie să ai cont pe https://portal.onrc.ro. Altfel nu poți verifica cererea.

După autentificare, în meniul din stânga, caută link-ul Stadiu dosar.

La Criteriu căutare alege Număr înregistrare.

Apoi vei avea un ecran similar cu cel mai de mai jos:

Formular informare stadiu dosar
Formular informare stadiu dosar

Alege județul, apoi la Numărul înregistrării scrie numărul care apare pe hârtie la Intrare Nr.. După număr, urmează o dată. Anul datei trebuie ales la An înregistrare.

Apare denumirea firmei. Click pe denumire și vor apărea toate cererile de până atunci. Click pe un Nr. de înregistrare pentru detalii și pentru a afla stadiul căutat.

Certificat SSL gratuit + reînnoire gratuită permanentă

SSLCertificatele SSL sunt vândute de o grămadă de site-uri. Unele sunt chiar cele  ale autorităţilor care le emit, altele le revând pe cele ale emitenţilor. Cu câţiva ani în urmă căutam să obţin astfel de certificate, dar gratuit. Cel mai la îndemână sunt certificatele self-signed, însă acestea nu sunt recunoscute de browsere ca fiind certificate valide, deoarece nu sunt emise de o autoritate. După o perioadă de căutări am găsit StartSSL, iar de curând CAcert.

StartSSL

StartSSL emite certificate SSL gratuite, care validează doar domeniul. Emite şi celelalte tipuri de certificate SSL mai avansate, acestea fiind contra cost. Emiterea certificatelor SSL gratuite se face pe baza confirmării unei adrese de e-mail care aparţine unei persoane responsabile de domeniu. Paşii de instalare sunt bine documentaţi. Cu puţin timp înainte de expirarea certificatului, puteţi emite unul nou pentru acelaşi domeniu. Nu am găsit limitări în legătură cu aceste “prelungiri”.
De asemenea am observat că StartSSL are o altă politică pentru certificatele plătite. Certificatele sunt împărţite pe clase:

  • clasa 1, singura gratuită, asigură doar validare de domeniu
  • clasa 2 asigură validare de identitate
  • clasa 3 asigură validarea companiei
  • clasa 4 asigură validarea extinsă a companiei; certificatele de clasă 4 sunt acelea cu bandă verde

Pentru a emite certificate pentru una din clasele 2, 3 sau 4, plăteşti 1 verificare anuală (pentru ce clasă de certificat SSL te interesează). Aceste validări sunt în general mai scumpe decât cumpărarea unui singur certificat SSL din acea clasă de pe alte site-uri. Avantajul StartSSL apare atunci când ai mai multe site-uri, deoarece cu o singură validare pentru o clasă, poţi emite oricâte certificate doreşti, pentru oricâte domenii şi subdomenii.

Notă: După emiterea unui certificat, dacă este instalat imediat, este posibil să nu fie acceptat de către Mozilla Firefox. Trebuie aşteptat un timp (până la 12 ore, dar din experienţă lucrurile se rezolvă în mai puţin de 3 ore) până când certificatul va fi recunoscut corect şi de Firefox.

CAcert

CAcert este site-ul unei organizaţii non-profit şi de asemenea emite certificate SSL gratuite. Deoarece am fost mulţumit de StartSSL, nu am folosit acest site şi nu am nicio expertiză referitoare la produsele şi serviciile lor.

 

Update decembrie 2017

Conform unei note StartSSL, certificatele lor nu mai sunt considerate “trusted” de browserele populare (Chrome, Firefox etc.), drept urmare acest serviciu nu mai poate oferi calitatea iniţială.

De curând am aflat de un nou serviciu:

Let’s Encrypt

Acesta pare a fi şi cel mai calitativ serviciu. Deşi certificatele expiră la fiecare 3 luni, Let’s Encrypt oferă posibilitatea de reînnoire automată a certificatelor, astfel că, dacă este bine configurat, nu o să aveţi surprize să rămâneţi cu un certificat expirat. Control panel-urile precum CPanel, Virtualmin şi altele, oferă plug-in-uri pentru integrarea cu Let’s Encrypt.

A fost anunţat faptul că din 2018 vor fi disponibile şi certificate wildcard, pentru un număr nelimitat de subdomenii.

Ce versiune de browser am?

Uneori avem nevoie să ştim ce versiune de browser avem. Unele site-uri cer un anumit browser sau o anumită versiune a unui browser. Mai jos puteţi citi cum anume să aflaţi versiunea pentru Google Chrome, Mozilla Firefox, Internet Explorer şi Microsoft Edge:

A. Google Chrome

I) Cea mai scurtă variantă este să scrieţi în bara de adrese: chrome://help sau chrome://version/

ChromeVer1II) O altă variantă este să urmaţi paşii:

1. Click pe butonul Menu
2. Mouse over pe Help
3. Click pe About Google Chrome

 

ChromeVer2

FirefoxVer1B. Mozilla Firefox

1. Click pe butonul Menu
2. Click pe Help
3. Click pe About Firefox (ultima opţiune)

FirefoxVer2

FirefoxVer3

IEVer1C. Internet Explorer

I) Cea mai scurtă variantă este să intraţi pe pagina de la Microsoft: https://windows.microsoft.com/ro-ro/internet-explorer/which-version-am-i-using

II) O altă variantă este să urmaţi paşii:

1. Click pe butonul Tools
2. Click pe About Internet Explorer

IEVer2

MSEdgeVer1 D. Microsoft Edge

1. Click pe butonul More
2. Click pe Settings
3. Scroll până jos

MSEdgeVer2

Cum schimb numerele roşii la maşină, cu alte numere roşii

Numere-rosiiAtunci când cumpăraţi o maşină cu numere roşii (provizorii) şi este nevoie să fie schimbate cu altele (de ex. pentru că nu aveţi timp s-o înmatriculaţi până expiră numerele actuale), sunt o serie de paşi de făcut. Atenţie, pentru o maşină puteţi lua doar de 3 ori numere provizorii.

Eu am avut nevoie să fac asta în Ploieşti, însă am înţeles că se face similar peste tot. Pentru judeţul Prahova, gasiţi informaţii la http://www.prefecturaprahova.ro/permise-auto/Autorizatia-de-circulatie-provizorie-Documente.html

Acolo aveţi tot ce e nevoie, însă uneori e un pic mai dificil de decodificat ce scrie în acel document. O alternativă comodă este să mergeţi la un birou de copiat acte, însă este posibil să vă spună ceea ce scriu eu mai departe.

Mai jos sunt exact paşii pe care i-am facut eu (în calitate de persoană fizică) ca să schimb numerele provizorii ale unui autoturism.

1. Am scos la imprimantă Cererea solicitantului şi am completat-o. O găsiţi pe site-ul prefecturii de obicei. Eu am gasit-o aici. La numărul de identificare se completează cu seria de şasiu. Restul datelor sunt uşor de identificat.

2. Asigurare auto RCA pentru 30 de zile, se poate face la orice firmă care face RCA. Asigurarea este bine să începă odată cu ziua în care veţi scoate numerele provizorii, altfel numerele vor expira odată cu asigurarea. Dacă puteţi face asigurarea direct pe 6 luni, puteţi să o faceţi şi o veţi putea folosi şi la înmatriculare, însă anumite firme de asigurare refuză să o facă dacă nu aveţi plătită taxa de mediu (sau alt act… fiecare cu obiceiul).

3. Plată Taxa de autorizare provizorie a circulaţiei, în valoare de 9 lei. Am plătit-o la Taxe şi impozite (care aparţine de primărie).

4. Plată Contravaloarea autorizaţiei de circulaţie provizorie, în valoare de 13 lei. Am plătit-o la CEC. Dacă aveţi de gând să înmatriculaţi maşina pe numele dvs., vă recomand să platiţi şi taxa de înmatriculare (37 lei), ca să nu mai faceţi alt drum la CEC. Taxa de înmatriculare este valabilă 3 ani.

5. Actul de identitate copie + original

6. Copia declaraţiei vamale. Copie după actele care atesta cum a fost introdusă maşina în ţară (dacă nu provine din România).

7. Copii ale documentelor care atesta dreptul de proprietate. Aici am dus dopie după cartea maşinii şi în plus atât copie după contractul de vânzare-cumpărare, cât şi copie după contractul de vânzare-cumpărare dintre proprietarii anteriori.

8. Plată Contravaloarea plăcuţelor cu număr provizoriu, în valoare de 40 lei. Aceasta se plăteşte la ghişeul de la care primiţi şi numerele provizorii.

Când am ajuns la ghişeul de unde am luat numere provizorii, am avut la mine (între paranteze am scris numerele de la punctele de mai sus): (1) în original, (2) copia, (3) chitanţa originală, (4) chitanţa originală, (5) copie + original, (6) copie, (7) copii, (8) 40 lei cash, pentru plata pe loc.

Toate datele scrise în acest post sunt valabile la data postării. Pentru date exacte, accesaţi site-urile oficiale şi luaţi în considerare documentele actualizate.

Mult succes!

1 licenţă ESET Smart Security – gratuită

Un mic cadou de Crăciun special pentru cineva care foloseşte (sau vrea să folosească) antivirusul ESET Smart Security, am scris mai jos codul de activare pentru o licenţă valabilă 100 de zile.

Codul este valabil pentru prima persoană care vede şi-l activează. În caz că nu doriţi să folosiţi această licenţă, vă rog să nu o activaţi şi să o lăsaţi cuiva căruia îi şi este de folos.

Atenţie: Codul poate fi activat până pe 31.12.2014

Pentru activarea licenţei, intraţi pe www.eset.ro/box şi introduceţi codul de mai jos:

ROA2-23XS-TNKK-4NMR-X74G

Sărbători fericite!

dkim-filter: smfi_opensocket() failed

dkimÎncă un post într-o limbă străină (de data asta despre DKIM) pentru cei care nu au nicio treabă cu calculatoarele, însă, aşa cum am scris în postul iniţial, aici găsiţi problemele care mi-au dat de cap şi cum le-am rezolvat. Unele ajută o categorie de oameni, altele altă categorie şi tot aşa. Oricum, probabil că nu vor mai fi în următoarea perioadă posturi despre servere deoarece mă apropii de finalizat reconfigurarea unui server şi îmi mut focusul. Dar să trecem la subiect.

DKIM-milter semnează e-mail-urile care urmează a fi trimise de acel server. Se setează în Postfix ca mailurile să treacă mai întâi pe la semnarea DKIM. N-o să intru în detalii despre acest lucru pentru că nu acesta este subiectul (mai discutăm în comentarii dacă este cazul).

Eroarea era la încercarea de a porni dkim-milter şi era cât se poate de aiurea:

/etc/init.d/dkim-milter start
Starting DomainKeys Identified Mail Milter (dkim-filter): dkim-filter: smfi_opensocket() failed
                       [FAILED]

În momentul în care apărea această eroare, în /var/log/maillog scria:

Jun 10 21:16:48 nutrienti dkim-filter[6758]: Sendmail DKIM Filter: Unable to bind to port inet:8891@localhost: Cannot assign requested address
Jun 10 21:16:48 nutrienti dkim-filter[6758]: Sendmail DKIM Filter: Unable to create listening socket on conn inet:8891@localhost
Jun 10 21:16:48 nutrienti dkim-filter[6758]: smfi_opensocket() failed

Eu nu mă aştept ca pentru toată lumea să existe aceeaşi rezolvare, însă pentru cei care au serverul configurat similar, e posibil să dea de problema aceasta.

Practic dkim-milter încerca să asculte pe 8891@localhost conform setărilor din /etc/sysconfig/dkim-milter .
Problema a fost că localhost este setat ca IPv6 şi el încerca să se conecteze la 8891@::1 . Singurul lucru pe care l-am făcut a fost să schimb 8891@localhost cu 8891@127.0.0.1 .

Pentru a putea folosi serviciul prin Postfix, trebuie schimbat şi în Postfix acest lucru.

UPDATE 25.02.2015

Eroarea anterioară am primit-o în CentOS 6.X. Trecând la CentOS 7, am avut surpriza să dau din nou de această eroare (norocul meu că mai erau şi alte detalii acolo). Situaţia: dkim-milter pornea prima dată după instalare, însa după reboot, dădea failed. Intrând în investigaţii am constatat că dispărea folderul /var/run/dkim-milter şi singura soluţie găsită a fost să creez un script, care la fiecare reboot să fie lansat şi să creeze folderul înainte să încerce programul să se lanseze.

Scriptul (să-i spunem startdkim.sh):

#!/bin/bash
mkdir /var/run/dkim-milter
chown dkim-milter:dkim-milter /var/run/dkim-milter

Acesta se poate pune oricunde. De exemplu în /root/cron_scripts/startdkim.sh . Se face scriptul executabil:

cd /root/cron_scripts
chmod +x startdkim.sh

Apoi se editează crontab

crontab -e

şi se adaugă în prima linie să pornească la fiecare reboot:

@reboot /root/cron_scripts/startdkim.sh > /dev/null 2>&1

pcfg_openfile: unable to check htaccess file, ensure it is readable

Distracţia mereu începe atunci când primeşti o eroare… eronată. Pentru că eroarea a apărut dintr-un alt motiv decât este explicată. Aşa am întâmpinat eu această eroare la mutarea unui site de pe un server pe altul.

[Wed Jun 05 18:34:26 2013] [error] [client 2a02:2f0e:c0d0:98:d8ef::fc99:3969] PHP Warning: imagepng(): Unable to open ‘./images/captcha/feb84f81d7590126da1c977fe975583c.png’ for writing: Permission denied in /var/www/library/Zend/Captcha/Image.php on line 563
[Wed Jun 05 18:34:26 2013] [crit] [client 2a02:2f0e:c0d0:98:d8ef::fc99:3969] (13)Permission denied: /var/www/sub.domeniu.com/public_html/images/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sub.domeniu.com/

La o astfel de eroare, m-am întrebat “de unde .htaccess acolo, pentru ca nu a fost niciodată?” Studiind puţin problema am constatat de fapt că nu erau suficiente drepturi pentru apache ca să scrie imaginea în directorul captcha. Este singurul lucru pe care l-am făcut ca să funcţioneze totul din nou şi să nu mai primesc eroarea. După cum se vede, nu are nicio legătură cu eroarea în sine.

Sugestie: verificaţi drepturile directorului începând de la document_root al (sub)domeniului respectiv. Nu a fost nevoie să dau permisiuni doar directorului captcha, ci şi la images. De asemenea, drepturi necesare nu au fost de scriere sau citire, ci de execuţie (+x).

Succes!

Windows 8 & Internet Connection Sharing (ICS)

[Dacă n-ai timp să citeşti toată povestea cu Windows 8 & Internet Connection Sharing şi te grăbeşti în rezolvarea problemei, citeşte doar ce este bold-uit]

Ce poţi face când routerul pleacă în garanţie şi vrei totuşi să ai net la 2 calculatoare? Acesta a fost cazul meu şi cea mai simplă soluţie (care de data aceasta nu s-a dovedit deloc aşa) este activarea Internet Connection Sharing (ICS), astfel încât să pot da internet şi altui calculator.

Până azi, am configurat ICS în 5 minute în mai toate Windows-urile (XP, Vista, 7), însă azi s-a întâmplat să fiu nevoit să-l configurez în Windows 8. În 5 minute ambele calculatoare erau configurate, aveam ping reciproc, însă exista o singură problemă: nu mergea internetul pe cel de-al 2-lea 🙂

După ce am început să cred că am greşit ceva prin setări şi am luat-o de vreo 3 ori de la capăt, m-am gândit totuşi că ar putea fi cablul de vină, aşa că am scos un alt cablu de la naftalină şi… l-am scos degeaba, că nu era de la cablu. Toate update-urile la zi, deci care să fie problema? După vreo 3 ore de stors creierii şi diverse căutări pe internet, care mai de care mai exacte pentru problema mea, am găsit o mulţime de oameni dezamăgiţi de această problemă, dar într-un final şi soluţia, chiar pe forum la Microsoft, soluţie dată de utilizatori care s-au confruntat cu aceeaşi problemă. Rezolvarea a durat 1 minut după ce am găsit soluţia, aşa că dacă ai aceeaşi problemă (Windows 8 care să partajeze internetul prin Internet Connection Sharing şi nu functionează), citeşte mai jos explicaţia şi rezolvarea.

Windows 8 are probleme cu ICS! După multe încercări, începi să-ţi dai seama ce acest lucru. Ce se întâmplă de fapt este că există un serviciu numit SharedAccess, care se pare că porneşte înaintea altor servicii care… nu ar trebui. Din acest motiv, deşi interfeţele de reţea sunt configurate corect pentru a partaja internetul de la una la alta, acest lucru nu se întâmplă.

Soluţia anevoioasă: restartarea procesului SharedAccess după fiecare repornire a calculatorului/serverului. Cum se face acest lucru (2 variante):
1. se apasă tasta Windows şi se tastează “services.msc” (fără ghilimele), se va deschide “Services”, iar acolo căutăm “Internet Connection Sharing (ICS)” şi-i dăm restart.
ics_serv
2. mai simplu decât varianta 1; în Windows 8, Microsoft a schimbat Task Manager şi a inclus chiar aici serviciile, aşa că deschidem Task Manager, mergem la tab-ul Services şi căutăm “SharedAccess” şi-i dăm restart.
ics_tm

Acum verificaţi internetul pe celălalt calculator. Funcţionează? Dacă da, citiţi soluţia simplă pentru a vă scăpa de o muncă în plus cu ICS.

Soluţia simplă: se apasă tasta Windows şi se tastează “services.msc” (fără ghilimele), se va deschide “Services”, iar acolo căutăm “Internet Connection Sharing (ICS)”. Îl deschidem cu dublu click şi la “Startup type” alegem “Automatic (Delayed Start)”, ceea ce înseamnă că procesul va porni mai târziu, dar foarte probabil după procesele care trebuie să pornească primele. Apoi dăm restart la proces ca să nu fie nevoie să restartăm tot sistemul de operare.

Dacă totuşi se întâmplă ca după un restart tot să nu meargă, folosiţi soluţia anevoioasă de mai sus, dar atenţie, aşteptaţi suficient de mult ca să pornească serviciul. Pe pagina cu soluţia cineva a spus că în acest mod “Automatic (Delayed Start)” îi porneşte procesul cam după 5 minute de la pornirea Windows-ului. Aş fi înclinat să cred că are un calculator încet, însă procesorul este i7 960. Deci există probabilitatea ca cel de-al 2-lea calculator să primească internet puţin mai târziu.

Sper totuşi că în scurt timp să apară şi un update care să rezolve această problemă, ca să putem reveni la setările iniţiale.

Iată şi link-ul unde am găsit rezolvarea problemei: https://social.technet.microsoft.com/Forums/en/W8ITProPreRel/thread/88613e70-8baa-4b6a-977a-4e2f9b252317

Soluţia pe scurt:
1. rulează “services.msc”
2. deschide procesul “Internet Connection Sharing (ICS)”
3. schimbă “Startup type” în “Automatic (Delayed Start)”
4. reporneşte procesul / reporneşte calculatorul