');display:inline-block;width:20px}.fa-star-checked{color:orange;fill:orange}.fa-star-checked::before{content:url('data:image/svg+xml; utf8, ')}.product-button{border:none;outline:0;display:inline-block;padding:8px;color:#fff;background-color:#333;text-align:center;cursor:pointer;width:100%;text-decoration:none}.product-button:hover{background-color:#555}.product-column{float:left;width:33.3%;margin-bottom:16px;padding:0 8px}.product-column:last-child{padding:0 0 0 8px}.product-column:first-child{padding:0 8px 0 0}@media(max-width: 650px){.product-column{width:100%;display:block;padding:0}.product-column:last-child{padding:0}.product-column:first-child{padding:0}}.product-card{-webkit-transition:.3s;transition:.3s;background-color:#f1f1f1}.product-card:hover{box-shadow:0 8px 12px 0 rgba(0,0,0,.2)}.product-header{text-align:center}.product-price{text-align:center;color:#bd081c;font-weight:bold;font-size:120%}.product-container{padding:0 16px}.product-container::after,.product-row::after{content:"";clear:both;display:table}.product-rating{position:absolute;z-index:100}div.product-card-image{width:100%;height:200px;background-repeat:no-repeat;background-size:80% auto;background-position:center 25px;padding:10px 16px 0px 16px;overflow:hidden}.contact-form{padding:20px 20px;margin:0px 0px 20px 0px;border-radius:10px;border:1px solid #ccc}.contact-form fieldset{border:0px;padding:0px;margin:0px}.contact-message-box{margin:10px 0px 0px 0px}.contact-message{width:100%;height:150px;resize:vertical;border-radius:6px;border:1px solid #ccc;padding:10px}.contact-label{padding:10px 20px 10px 0px}.contact-email{max-width:100%}.contact-form-header{margin:0px 0px 20px 0px;font-size:larger;font-weight:bold}.contact-submit{text-align:right;margin-top:20px}.skyscrapper{display:inline-block;width:300px;height:600px}.tab{overflow:hidden;border:1px solid #ccc;background-color:#f1f1f1}.tab button{background-color:inherit;float:left;border:none;outline:none;cursor:pointer;padding:14px 16px;transition:.3s}.tab button:hover{background-color:#ddd}.tab button.active{background-color:#ccc}.kategorie{border:1px solid gray;padding:0px 10px}.tabcontent{display:none;padding:6px 12px;border:1px solid #ccc;border-top:none}.seo{background-color:#ffffe0}.article-addonInfo{margin-bottom:10px}.article-tags::before{content:url('data:image/svg+xml; utf8, ');width:14px;margin:0px 5px 0px 10px;display:inline-block}.article-autor::before{content:url('data:image/svg+xml; utf8, ');width:14px;margin:0px 5px 0px 10px;display:inline-block}.article-pub-date::before{content:url('data:image/svg+xml; utf8, ');width:14px;margin:0px 5px 0px 0px;display:inline-block}.green{color:#4caf50}.red{color:red}.yellow{color:#ff0}.blue{color:#55acee}.hljs{display:block;overflow-x:auto;padding:.5em;color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-keyword,.hljs-formula{color:#a626a4}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta-string{color:#50a14f}.hljs-built_in,.hljs-class .hljs-title{color:#c18401}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#986801}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#4078f2}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}.hljs-link{text-decoration:underline}.emoji{font-family:apple color emoji,segoe ui emoji,android emoji,emojisymbols,emojione mozilla,twemoji mozilla,segoe ui symbol}#search-progress{width:100%;background-color:#fed}#search-bar{width:0%;height:30px;background-color:#bd081c}#search-bar-text{text-align:center;width:100%}.textarea-small{width:100%;height:100px;font-size:1rem;line-height:1.5;padding:10px}.textarea-middle{width:100%;height:200px;font-size:1rem;line-height:1.5;padding:10px}.textarea-large{width:100%;height:400px;font-size:1rem;line-height:1.5;padding:10px}th{background-color:#bd081c;color:#fff}form th{background-color:#bd081c;color:#fff}.form-label{float:left;padding:.375rem 0px}.form-label-checkbox{padding:.375rem 0}.form-submit{background-color:#bd081c;color:#f2f2f2}.settings-header{background-color:#bd081c;color:#fff;margin-top:20px}.form-row{clear:both}.form-row-description{clear:both;font-size:small;margin-bottom:10px}.mandatory-fail{border:2px solid red}.small{font-size:small}.gravatar{margin-right:10px}.gravatar img{vertical-align:middle;border-radius:50%}@media screen and (min-width: 1200px){.max-width{margin-left:-600px;left:50%}.max-width-without-padding{margin-left:-600px;left:50%}}.progress-container{width:100%;height:5px;clear:both}.progress-bar{height:5px;background:#4caf50;width:0%}.td-wrap{word-wrap:anywhere;word-break:break-all}.sortable-table{width:100%}.sortable-table th{cursor:pointer}.sortable-table tr{border:1px solid #300}.error{background-color:pink}
@media screen and (max-width: 1000px) {article{min-height:10px}.clanekimg{max-width:200px;width:auto;height:auto}.clanekimgproxy{margin-left:auto;margin-right:auto;max-width:200px;max-height:200px}.amp-img{width:100%;max-width:200px}.amp-img-center{left:50%;margin-left:-100px;position:relative;max-width:200px}.amp-content{margin-left:0px;margin-right:0px;margin-bottom:8px}body{margin-left:0px;margin-right:0px}article{padding:4px 20px 0px 20px}.content{position:relative;margin-top:47px;background-color:#fff}.clanekInfo{width:100%;display:block}.clanekPrehled{min-height:130px;display:block;border-bottom:1px solid #ccc;width:100%}.clanekImage{margin:25px 0px 25px 0px;width:100%;text-align:center}.clanekImageBorder{height:100px;width:100px;position:relative;margin-left:-50px;left:50%}.clanekImageBorder img{max-height:100px;max-width:100px}.clanekDesc{vertical-align:middle}.topNavigation a:not(:first-child){display:none}.topNavigation input[type=text]{display:none}.topNavigation .searchbox{display:none}.topNavigation a.icon{float:right;display:block}.topNavigation.responsive{position:relative}.topNavigation.responsive a.icon{position:absolute;right:0px;top:0px}.topNavigation.responsive a{float:none;display:block;text-align:left}.topNavigation.responsive input[type=search]{float:none;display:block;text-align:left;width:100%;margin:4px 0px}.topNavigation.responsive .searchbox{display:block;padding:0px;width:100%}.topNavigation.responsive .searchbox-input{padding:0px 16px;display:block}.topNavigation.responsive .searchbox button{padding:14px 16px;width:100%;text-align:left}.paticka-padding{padding:14px 20px 14px 20px}.paticka-amp-img{padding:0px 25px 25px 25px}.paticka-img img{width:100px;margin:0px 25px 25px 25px}.paticka-amp-img img{width:100px}.paticka-additional-texts{padding:14px 20px 14px 20px}#top-banner{padding:10px 20px 5px 20px;min-height:70px}#top-banner img{width:100%}#top-banner strong{padding-left:20px}#left-skyscrapper{display:none}#right-skyscrapper{display:none}#mobile-banner{display:block;max-width:1000px}.inline-r{display:block}.breadcrumbs{padding:0px 20px}.youtube{position:relative;width:200px;margin-left:-100px;left:50%}.download-button a{display:block}.comment p{word-wrap:break-word}.slideshow-container{max-width:100%}.mySlides-img{max-width:100%}.mySlides-img:hover{opacity:.6}.article-tags{display:block;margin-top:10px}.article-tags::before{margin:0px 5px 0px 0px}.top-reference{margin:0 -20px;padding:0 20px}.form-label{width:100%}.form-input{width:100%}.only-desktop{display:none}.hide-table{overflow:scroll;margin-left:-20px;margin-right:-20px;border:1px solid orange}.hide-table table{margin-left:20px;margin-right:20px}
} @media screen and (min-width: 1000px) {body{overflow-x:hidden}.clanekimg{max-width:400px;width:auto;height:auto}.clanekimgproxy{margin-left:auto;margin-right:auto;max-width:400px}.amp-img{width:100%;max-width:400px}.amp-img-center{left:50%;margin-left:-200px;position:relative;max-width:400px}.content{margin-top:47px;background-color:#fff}.max-width{max-width:1200px;position:relative;padding:0 50px}.max-width-without-padding{max-width:1200px;position:relative}.clanekPrehled{min-height:130px;display:block;margin-left:-50px;margin-right:-50px;padding-left:50px;padding-right:50px;-webkit-transition:.3s;transition:.3s}.clanekImage{float:left;height:100px;width:100px;margin:0px 25px 25px 25px}.clanekImageBorder img{max-height:100px;max-width:100px}.clanekDesc{vertical-align:middle;margin-left:150px}.paticka-padding{padding:14px 50px 14px 50px}.paticka-amp-img{float:left}.paticka-img{float:left}.paticka-img img{width:100px;margin:0px 25px 25px 25px}.paticka-texts{margin-left:150px}.paticka-additional-texts{padding:14px 50px 14px 50px}#top-banner{padding:10px 50px 5px 50px;min-height:75px}#left-skyscrapper{position:fixed;left:50%;margin-left:-910px;width:300px;height:600px;top:140px}#right-skyscrapper{position:fixed;left:50%;margin-left:610px;width:300px;height:600px;top:140px}#mobile-banner{display:none}.replacement{-webkit-filter:grayscale(100%);filter:grayscale(100%)}.replacement:hover{-webkit-filter:grayscale(0%);filter:grayscale(0%)}.inline-r{display:none}.breadcrumbs{padding:0px 50px}.youtube{position:relative;width:400px;margin-left:-200px;left:50%}.download-button a{display:block;float:left;clear:left}.download-button a:after{content:" »";opacity:0;display:none;transition:.5s}.download-button a:hover:after{display:inline;opacity:1;right:0}.slideshow-container{height:350px}.mySlides-img{width:100%;max-width:1000px}.mySlides-img:hover{opacity:.6}.article-addonInfo{margin-bottom:10px;clear:both;margin-left:150px}.form-label{width:200px}.form-input{width:calc(100% - 200px);min-width:200px}.form-row-description{margin-left:200px}.productimg{max-width:100%;max-height:100%}.amp-productimg{max-width:100%}
} @media print {#left-skyscrapper{display:none}#right-skyscrapper{display:none}#top-banner{display:none}.topMenu{display:none}.powered-by{display:none}.newsletter-signup{display:none}code{border:1px solid #ccc;padding:10px;overflow:visible;overflow-y:visible;white-space:normal;display:block}.new-comment{display:none}.clanekimg-print{display:block;margin:auto;vertical-align:middle}.clanekimg-nonprint{display:none}.no-print{display:none}
} #top-banner-wrapper {background-color: #555;}#left-skyscrapper {position: absolute;}#right-skyscrapper {position: absolute;}.download-button a {background-image: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iZG93bmxvYWQtYnV0dG9uLWJhY2tncm91bmQiIGZpbGw9IiMyNzk1ZTkiIHN0cm9rZT0iIzI3OTVlOSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTEwMCAxMjAwIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik00NTAgMGgyMDBxMjEgMCAzNS41IDE0LjVUNzAwIDUwdjQ1MGgxOTFxMjAgMCAyNS41IDExLjVUOTA5IDUzOUw1ODIgOTM5cS0xMyAxNi0zMiAxNnQtMzItMTZMMTkxIDUzOXEtMTMtMTYtNy41LTI3LjVUMjA5IDUwMGgxOTFWNTBxMC0yMSAxNC41LTM1LjVUNDUwIDB6bTU3NSA4MDBoNTBxMTAgMCAxNy41IDcuNXQ3LjUgMTcuNXYzNTBxMCAxMC03LjUgMTcuNXQtMTcuNSA3LjVIMjVxLTEwIDAtMTcuNS03LjVUMCAxMTc1VjgyNXEwLTEwIDcuNS0xNy41VDI1IDgwMGg1MHExMCAwIDE3LjUgNy41VDEwMCA4MjV2MTc1aDkwMFY4MjVxMC0xMCA3LjUtMTcuNXQxNy41LTcuNXoiPjwvcGF0aD48L3N2Zz4=");}.in-article-tip-header {background-image: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iYnVsYi1iYWNncm91bmQiIGZpbGw9IndoaXRlIiBzdHJva2U9IndoaXRlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDE1MzYiIHdpZHRoPSIzMCIgaGVpZ3RoPSIzMCI+PHBhdGggZD0iTTczNiA0NDhxMCAxMy05LjUgMjIuNVQ3MDQgNDgwdC0yMi41LTkuNVQ2NzIgNDQ4cTAtNDYtNTQtNzF0LTEwNi0yNXEtMTMgMC0yMi41LTkuNVQ0ODAgMzIwdDkuNS0yMi41VDUxMiAyODhxNTAgMCA5OS41IDE2dDg3IDU0IDM3LjUgOTB6bTE2MCAwcTAtNzItMzQuNS0xMzR0LTkwLTEwMS41LTEyMy02MlQ1MTIgMTI4dC0xMzYuNSAyMi41LTEyMyA2Mi05MCAxMDEuNVQxMjggNDQ4cTAgMTAxIDY4IDE4MCAxMCAxMSAzMC41IDMzdDMwLjUgMzNxMTI4IDE1MyAxNDEgMjk4aDIyOHExMy0xNDUgMTQxLTI5OCAxMC0xMSAzMC41LTMzdDMwLjUtMzNxNjgtNzkgNjgtMTgwem0xMjggMHEwIDE1NS0xMDMgMjY4LTQ1IDQ5LTc0LjUgODdUNzg3IDg5OC41IDc1MyAxMDA2cTQ3IDI4IDQ3IDgyIDAgMzctMjUgNjQgMjUgMjcgMjUgNjQgMCA1Mi00NSA4MSAxMyAyMyAxMyA0NyAwIDQ2LTMxLjUgNzF0LTc3LjUgMjVxLTIwIDQ0LTYwIDcwdC04NyAyNi04Ny0yNi02MC03MHEtNDYgMC03Ny41LTI1dC0zMS41LTcxcTAtMjQgMTMtNDctNDUtMjktNDUtODEgMC0zNyAyNS02NC0yNS0yNy0yNS02NCAwLTU0IDQ3LTgyLTQtNTAtMzQtMTA3LjVUMTc3LjUgODAzIDEwMyA3MTZRMCA2MDMgMCA0NDhxMC05OSA0NC41LTE4NC41dDExNy0xNDIgMTY0LTg5VDUxMiAwdDE4Ni41IDMyLjUgMTY0IDg5IDExNyAxNDJUMTAyNCA0NDh6Ii8+PC9zdmc+");}/* Center the notification content */amp-user-notification > div { padding: 1rem; display: flex; align-items: center; justify-content: center; background-color: #222; color: #fff;}
Potřebuji odsouhlasit používání cookies. Když tyto stránky používáte, vyjadřujete souhlas.
FlexiBee a Let's Encrypt SSL certifikát
Pokud používáte cloudové FlexiBee, nemusíte SSL certifikáty řešit. Pokud ho ale máte nainstalované na svém vlastním serveru, je dobré vybavit ho bezpečnějším SSL certifkátem.
Načítím reklamu ...
Výchozí certifikát FlexiBee
Ve výchozím stavu je k zabezpečení komunikace využíván self-signed certifikát. O něm ale již dnes většina prohlížečů prohlašuje, že není bezpečný. Musíte tedy potvrdit „bezpečnostní výjimku“, abyste mohli přistoupit k webovému rozhraní nebo REST API.
Schválit bezpečnostní výjimku
Detail self-signed certifikátu FlexiBee
Instalace vlastního certifikátu
Jak tedy tento stav napravit a zabezpečit komunikaci s FlexiBee? Je potřeba na server nahrát vlastní certifikát. Postup jak certifikát vyměnit je popsaný v dokumentaci na stránkách FlexiBee. Pokud máte správný certifikát, obsahující všechno potřebné, stačí zavolat:
curl -X PUT -u jmeno:heslo -k -L -T domena.eu.pem https://localhost:5434/certificate Většina certifikátů je ale placená. A nestojí zrovna malý peníz 🙂. Existuje ovšem certifikační autorita Let's Encrypt, která poskytuje SSL certifikáty zdarma.
Let's Encrypt certifikát
Certifikát není možné rovnou nahrát do FlexiBee. Není totiž ve správném tvaru a neobsahuje celý řetězec certifikátů. Je tedy nutné si nejdříve certifikát připravit.
Certifikáty se nacházejí v adresáři /etc/letsencrypt/live/nazevserveru/. Nazevserveru je proměnná, pod kterou Let's Encrypt ceritifikát vytvořil. Většinou se jedná o název serveru (např. charlieblog.eu).
Jediný certifikát, který se v adresáři nenachází, je DST Root CA X3. Tento certifikát si budeme muset stáhnout z internetu.
Pro práci nejspíš budeme potřebovat root oprávnění, protože do adresáře letsencrypt nemá přístup jen tak někdo.
Přejdeme tedy do tohoto adresáře a můžeme začít.
# staneme se rootem
sudo su # přesuneme se do správného adresáře
cd /etc/letsencrypt/live/nazevserveru/ # převedeme klíč do formátu PKCS#1
openssl rsa -in privkey.pem -out rsaprivkey.pem # z internetu stáhneme certifikát DST Root CA X3
curl https://ssl-tools.net/certificates/dac9024f54d8f6df94935fb1732638ca6ad77c13.pem > root-ca.pem # zkombinujeme všechny certifikáty a vytvoříme finální flexibee-le.pem
cat fullchain.pem root-ca.pem rsaprivkey.pem > flexibee-le.pem
Hotovo.
Teď už můžeme certifikát nahrát pomocí příkazu
curl -X PUT -u jmeno:heslo -k -L -T flexibee-le.pem https://localhost:5434/certificate
Jméno a heslo je nutné nahradit reálným uživatelským jménem a heslem 🙂.
Závěr
Kájovo tip
Vytvořte si .sh script a proces zautomatizujte cronem.
Čas jsou peníze 😉.
Konečně máme ve FlexiBee certifikát, který funguje, je zdarma a zabezpečí nám komunikaci.
Služby jako Integromat už nebudou mít s certifikátem problém. Při připojování k FlexiBee API z PHP již nebudeme muset nastavovat CURLOPT_SSL_VERIFYPEER a CURLOPT_SSL_VERIFYHOST na False.
Pokud chcete proces nasazení Let's Encrypt certifikátu zautomatizovat, koukněte se na ukázkový script, který jsem připravil. Naleznete ho v GitLab repozitáři. 😉